从Python中的PowerPoint表读取?

时间:2015-01-08 14:57:55

标签: python powerpoint

我正在使用python pptx模块自动更新powerpoint文件中的值。我可以使用以下代码提取文件中的所有文本:

from pptx import Presentation
prs = Presentation(path_to_presentation)
# text_runs will be populated with a list of strings,
# one for each text run in presentation
text_runs = []
for slide in prs.slides:
  for shape in slide.shapes:
    if not shape.has_text_frame:
      continue
  for paragraph in shape.text_frame.paragraphs:
    for run in paragraph.runs:
      text_runs.append(run.text)

此代码将提取文件中的所有文本,但无法提取ppt表中的文本,我想更新其中一些值。我试图从这个问题实现一些代码:Reading text values in a PowerPoint table using pptx?但不能。有任何想法吗?感谢。

2 个答案:

答案 0 :(得分:1)

您的代码将错过更多文本而不仅仅是表格;例如,它不会在作为组的一部分的形状中看到文本。

对于表格,您需要做几件事:

测试形状以查看形状的.HasTable属性是否为true。如果是这样,您可以使用形状的.Table对象来提取文本。从概念上讲,还有非常的空气码:

For r = 1 to tbl.rows.count
   For c = 1 to tbl.columns.count
      tbl.cell(r,c).Shape.Textframe.Text ' is what you're after

答案 1 :(得分:1)

这对我有用:

    def access_table(): 
            slide = prs.slides[0] #first slide
            table = slide.shapes[2].table # maybe 0..n
            for r in table.rows:
                    s = ""
                    for c in r.cells:
                            s += c.text_frame.text + " | "
                            #to write
                            #c.text_frame.text = "example"
                    print s