【问题标题】:How to modify existing tables in powerpoint using pandas and python-pptx?如何使用 pandas 和 python-pptx 修改 powerpoint 中的现有表?
【发布时间】:2021-07-17 14:52:06
【问题描述】:

我有一个类似的表,我想修改:

我还是这个库的新手,我似乎无法理解如何从文档中修改现有表。最好的方法是什么?我已经有了数据框(3 列,8 行)并且可以访问表(例如slide[0].shape[1])。如何使用此数据框更新数据(电影、售票、观看百分比?)

【问题讨论】:

  • 那么我必须逐个单元格地进行吗?难道没有办法让我只插入电影、门票和观看百分比的列表,而不是逐个单元格手动插入吗?
  • 不幸的是从未使用过它。只是想向您指出一些现有信息。在向数据科学.com 上的模块中有一个名为Editing tables 的部分
  • 这绝对有帮助。谢谢!

标签: python pandas powerpoint python-pptx


【解决方案1】:

您必须编写一个简短的例程来逐个单元格地执行此操作。 PowerPoint 表格中的每个单元格都是一个文本容器,API 中没有“从一系列序列(矩阵)填充此表格的单元格”方法。

请注意,所有值都必须是 str 类型(如果您使用的是 Python 2,则必须是 unicode)。 PowerPoint 表格没有 Excel 那样的数字或公式概念。每个单元格只包含文本。

这样的事情在简单的情况下可以解决问题,但您已经看到可能存在诸如“如果我想跳过标题行怎么办”或“如果矩阵与表格的大小不同怎么办”之类的复杂问题,或“如果我想根据列格式化具有特定小数位的数字怎么办”等。

M = {"matrix", some sequence of sequences like a `numpy` array or list of lists}
table = {"table" object retrieved from a shape on a slide}
populate_table(table, M)

def populate_table(table, M):
    for row in range(len(M)):
        row_cells = table.rows[row].cells
        for col in range(len(M[0]):
            row_cells[col].text = str(M[row][col])

所涉及的代码很小且易于定制,并且设计和使用通用解决方案的复杂性相当高,因此这留给用户自己解决。

没有什么能阻止您像上面的 populate_table(matrix, table) 这样创建自己的函数并在适合您的任何地方使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-08-16
    • 1970-01-01
    • 2021-02-24
    • 2020-05-29
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多