我知道这个问题很老,但我刚刚完成了一个使用python每天更新powerpoint的项目。基本上,每天早上运行python脚本,它从数据库中提取当天的数据,将数据放入powerpoint,然后执行powerpoint viewer来播放powerpoint。在
要回答您的问题,您必须循环浏览页面上的所有形状,并检查要搜索的字符串是否在形状.text. 您可以通过检查shape.has_text_框架是真的。这样可以避免错误。在
这是事情变得棘手的地方。如果你只是替换了形状.text对于要插入的文本,格式可能会松动。形状.text实际上是形状中所有文本的集合。这些文本可能会被分割成许多“运行”,并且所有这些运行可能具有不同的格式,如果您重写,这些格式将丢失形状.text或者更换部分绳子。在
幻灯片上有形状,形状可以有文本框,文本框有段落(至少一个)。总是这样。即使它是空白的),段落也可以有行。任何级别都可以有格式,而且您无法确定字符串被拆分的运行次数。在
在我的例子中,我确保任何要被替换的弦都是它自己的形状。您仍然需要一直深入到运行并在那里设置文本,以便保留所有格式。另外,你匹配的字符串形状.text可能实际上会分散到多个行,所以在第一行设置文本时,我也会将该段中所有其他行中的文本设置为空白。在
随机代码截图:from pptx import Presentation
testString = '{{thingToReplace}}'
replaceString = 'this will be inserted'
ppt = Presentation('somepptxfile.pptx')
def replaceText(shape, string,replaceString):
#this is the hard part
#you know the string is in there, but it may be across many runs
for slide in ppt.slides:
for shape in slide.shapes:
if shape.has_text_frame:
if(shape.text.find(testString)!=-1:
replaceText(shape,testString,replaceString)
抱歉,如果有任何打字错误。我在工作。。。。。在