Python Pptx - 修改现有表

时间:2018-06-13 15:40:22

标签: python pandas python-pptx

我对python-pptx模块很新,所以请原谅我的无知。我试图修改PowerPoint文件中的现有表格,但我没有在文档中的任何地方看到我可以执行此操作的地方。

我知道在哪里可以使用add_table()方法创建新表,但我只需要用Pandas数据帧中的数据修改现有表。

2 个答案:

答案 0 :(得分:1)

一旦获得形状ID(如Saleh所述),就可以像这样修改表格单元格:
对于幻灯片0,其形状ID为6,将第一个单元格(0,0)更改为“ Pina Colada”:

Presentation('yourpowerpoint.pptx').slides[0].shapes[6].table.cell(0,0).text= 'Pina Colada'

答案 1 :(得分:0)

python-pptx中有多种选择形状的方法。 解决此问题的最佳方法是了解形状的ID ,您可以通过打开xml并找到形状来获取ID,也可以在幻灯片中循环浏览所有形状并以这种方式打印id。但是,您仍然可以在不知道其ID的情况下选择形状。

如果您知道形状ID ,则可以在幻灯片中搜索该形状ID,这样的操作就会返回您想要的形状。

for shape in slide.shapes:
    if shape.shape_id == shape_id:
        return shape

如果您不知道形状ID ,有几种方法可以获取形状,它们虽然有点笨拙,但都可以使用。

  • 如果幻灯片中只有一个该形状类型的实例,这很简单,只需在幻灯片中搜索具有该形状类型的形状即可。
for shape in slide.shapes:
    if shape.shape_type == your_shape_type:
        return shape
  • 如果幻灯片中有不止一种这种形状类型的实例(即有多个表),它会变得更加复杂,您可以设置一些识别功能(放置占位符文本)。例如,我用占位符系列名称设置了一个图表,这就是我在python中选择它的方式。
for shape in slide.shapes:
    if shape.has_chart:
        if str([s.name for s in shape.chart.series][0]) == series_name:
            return shape