在 Python 中阅读 PowerPoint Table?
Read From PowerPoint Table in Python?
我正在使用 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 中的文本 table,我想更新其中的一些值。我试图从这个问题中实现一些代码:Reading text values in a PowerPoint table using pptx? 但不能。有任何想法吗?谢谢。
您的代码将遗漏更多文本,而不仅仅是表格;例如,它不会看到属于组的形状中的文本。
对于表格,您需要做几件事:
测试形状以查看形状的 .HasTable 属性 是否为真。如果是这样,您可以使用形状的 .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
这对我有用:
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
我正在使用 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 中的文本 table,我想更新其中的一些值。我试图从这个问题中实现一些代码:Reading text values in a PowerPoint table using pptx? 但不能。有任何想法吗?谢谢。
您的代码将遗漏更多文本,而不仅仅是表格;例如,它不会看到属于组的形状中的文本。
对于表格,您需要做几件事:
测试形状以查看形状的 .HasTable 属性 是否为真。如果是这样,您可以使用形状的 .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
这对我有用:
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