如何使用python powerpoint保持文本的原始文本格式?

时间:2017-07-21 21:35:12

标签: python formatting powerpoint python-pptx

我想在不更改格式的情况下更新文本框中的文本。换句话说,我希望在更改该文本时保留原始文本的原始格式

我可以使用以下内容更新文本,但格式在此过程中完全更改。

from pptx import Presentation
prs = Presentation("C:\\original_powerpoint.pptx")
sh = prs.slides[0].shapes[0]
sh.text_frame.paragraphs[0].text = 'MY NEW TEXT'
prs.save("C:\\new_powerpoint.pptx")

如何在保持原始格式的同时更新文本?

我还尝试过以下方法:

from pptx import Presentation
prs = Presentation("C:\\original_powerpoint.pptx")
sh = prs.slides[0].shapes[0]
p = sh.text_frame.paragraphs[0]
original_font = p.font
p.text = 'NEW TEXT'
p.font = original_font

但是我收到以下错误:

Traceback (most recent call last):
  File "C:\Codes\powerpoint_python_script.py", line 24, in <module>
    p.font = original_font
AttributeError: can't set attribute

1 个答案:

答案 0 :(得分:1)

文本框架由段落组成,段落由运行组成。因此,您需要在运行中设置文本。 enter image description here

可能只有一次运行,您的代码可以像这样更改:

from pptx import Presentation
prs = Presentation("C:\\original_powerpoint.pptx")
sh = prs.slides[0].shapes[0]
sh.text_frame.paragraphs[0].runs[0].text = 'MY NEW TEXT'
prs.save("C:\\new_powerpoint.pptx")
  

字符格式(字体特征)在运行时指定   水平。一个Paragraph对象包含一个或多个(通常是多个)运行。   分配给Paragraph.text时,该段中的所有运行都是   替换为一次新的运行。这就是为什么文本格式   消失因为包含该格式的运行会消失。