我正在使用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?但不能。有任何想法吗?感谢。
答案 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