2)怎么自定义母版?
https://jingyan.baidu.com/article/925f8cb8b5dfe7c0dce05671.html
3)什么是版式?
这个概念在下面的效果中,会得以体现。其中prs.slide_layouts[]传入0表示获取的是第一个版式,传入1表示获取的是第二个版式,以此类推下去。
4)添加Slide和内容
这里就需要使用上述的自定义母版。因为毕竟是使用python操作PPT,我们可以定义好自己想要展示的PPT母版,然后借助代码完成PPT的内容写入操作。
① 占位符id的确认
import pptx from pptx import Presentation prs = Presentation("空白.pptx") # prs.slide_layouts[]表示的是ppt中不同的版式 slide = prs.slides.add_slide(prs.slide_layouts[0]) for shape in slide.placeholders: phf = shape.placeholder_format print(f"{phf.idx}--{shape.name}--{phf.type}") shape.text = f"{phf.idx}--{shape.name}--{phf.type}" # 注意:做完这个操作,一定要记得保存一下! prs.save("电子奖状模板.pptx") """ 上述打印结果如下: 0--Title 1--TITLE (1) 这个表示标题占位符,id为0 13--Picture Placeholder 2--PICTURE (18) 这个表示图片占位符,id为13 14--Text Placeholder 3--BODY (2) 这个表示正文内容占位符,id为14 15--Text Placeholder 4--BODY (2) 这个表示正文内容占位符,id为15 我们一定要先知道每个空格的占位符id,才可以进行下面内容的填充。 """
效果如下:
② PPT内容的填写
import pptx from pptx import Presentation prs = Presentation("空白.pptx") slide = prs.slides.add_slide(prs.slide_layouts[0]) name = slide.placeholders[14] why = slide.placeholders[15] name.text = "黄同学" why.text = "学习太积极" prs.save("内容填充.pptx")
效果如下:
5)添加段落
① 占位符id的确认
import pptx from pptx import Presentation prs = Presentation("finall.pptx") slide = prs.slides.add_slide(prs.slide_layouts[0]) for shape in slide.placeholders: phf = shape.placeholder_format print(f"{phf.idx}--{shape.name}--{phf.type}") shape.text = f"{phf.idx}--{shape.name}--{phf.type}" print("-------------------------------------------") slide = prs.slides.add_slide(prs.slide_layouts[1]) for shape in slide.placeholders: phf = shape.placeholder_format print(f"{phf.idx}--{shape.name}--{phf.type}") shape.text = f"{phf.idx}--{shape.name}--{phf.type}" prs.save("哈哈.pptx")
效果如下:
② 段落的添加
import pptx from pptx import Presentation prs = Presentation("finall.pptx") slide = prs.slides.add_slide(prs.slide_layouts[0]) name = slide.placeholders[14] why = slide.placeholders[15] name.text = "黄同学" why.text = "学习太积极" # --------------------------------------------------- # prs1 = Presentation("finall.pptx") slide1 = prs.slides.add_slide(prs.slide_layouts[1]) shapes = slide1.shapes title_shape = shapes.title # 这句代码可以改为title_shape = shapes.placeholders[0] body_shape = shapes.placeholders[1] title_shape.text = "这是一个标题" tf = body_shape.text_frame # 这句代码就是给body占位符添加内容! tf.text = "带圆点的符号1" p = tf.add_paragraph() # 这个代码表示在原来的基础上,添加第一个段落! p.text = "带圆点的符号2" p = tf.add_paragraph() # 这个代码表示在原来的基础上,添加第二个段落! p.text = "带圆点的符号3" prs.save("嘿嘿.pptx")
效果如下: