Chr*_*ris 2 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")
Run Code Online (Sandbox Code Playgroud)
如何在保持原始格式的同时更新文本?
我还尝试了以下方法:
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
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
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
Run Code Online (Sandbox Code Playgroud)
小智 5
文本框架由段落组成,段落由运行组成。所以你需要在运行中设置文本。

可能您只有一次运行,您的代码可以像这样更改:
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")
Run Code Online (Sandbox Code Playgroud)
字符格式(字体特征)在运行级别指定。一个 Paragraph 对象包含一个或多个(通常是多个)运行。分配给 Paragraph.text 时,段落中的所有运行都将替换为一个新运行。这就是文本格式消失的原因;因为包含该格式的运行消失了。