Как я могу заменить текст в PPP на Python pptx? - PullRequest
0 голосов
/ 11 марта 2019

Я хочу заменить текст в текстовом поле в Powerpoint на Python-pptx. Все, что я нашел в Интернете, не работает для меня, и документация не так уж полезна для меня.

Итак, у меня есть текстовое поле с текстом:

  • $$Name 1$$
  • $$Name 2$$

и я хочу изменить $$Name1 $$ на Tom.

Как мне этого добиться?

Ответы [ 3 ]

0 голосов
/ 11 марта 2019

Попробуйте это:

import pptx

input_pptx = "Input File Path"
prs = pptx.Presentation((input_pptx))
testString = "$$Name1 $$" 
replaceString = 'Tom'

title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)

for slide in prs.slides:
    for shape in slide.shapes:
        if shape.has_text_frame:
            if(shape.text.find(testString))!=-1:
                shape.text = shape.text.replace(testString, replaceString)

        if not shape.has_table:
            continue    

prs.save('C:/test.pptx')
0 голосов
/ 20 марта 2019

Хорошо, спасибо. Я только что узнал, что мой пример PowerPoint был полностью испорчен. Нет, все работает нормально с новым PowerPoint, бланкированным

0 голосов
/ 11 марта 2019

Объект TextFrame, определенный в python-pptx , помогает манипулировать содержимым текстового поля. Вы можете сделать что-то вроде:

from python-pptx import Presentation
"""open file"""
prs = Presentaion('pptfile.pptx')
"""get to the required slide"""
slide = prs.slides[0]
"""Find required text box"""
for shape in slide.shapes:
    if not shape.has_text_frame:
        continue
    text_frame = shape.text_frame
    if "Name 1" == text_frame.text:
        text_frame.text = "Tom"
"""save the file"""
prs.save("pptfile.pptx")
...