接上文Python开发从零开始-50.29-Office 文档处理,本文小编与大家分享 Python 处理 Office 文档的相关知识。
4、幻灯片中添加内容
在幻灯片中添加的内容主要包括:文本、图片、表格和图表等。这需要使用 Slide 对象的 shapes 属性(SlideShapes 对象)的相关属性和方法进行设置,下面对常用的场景进行介绍:
(1)添加文本
在幻灯片中添加文本可以使用占位符或文本框两种方法:
1)使用占位符
SlideShapes 对象中预定义了占位符(SlidePlaceholder 对象),例如标题、副标题、内容区域等。修改这些占位符,能够插入文本、图片、图表等元素。
可以通过 SlideShapes 对象的 placeholders 属性获取当前幻灯片中所有占位符集合(pptx.shapes.shapetree.SlidePlaceholders 对象),该对象是一个序列,支持迭代、索引访问、len() 获取长度和字典式查找占位符。
例如新建一个基于默认母版的 PPT 文档,使用 Title Slide 布局,在主标题和副标题占位符添加文本的代码示例如下:
from pptx import Presentation# 创建一个新 PPT 文档prs = Presentation()# 如果 PPT 文档中只有一个母版,可以直接获取该母版的版式集合layouts = prs.slide_layouts# 添加新幻灯片,将新幻灯片对象与版式对象绑定slide = prs.slides.add_slide(layouts[0])# 使用 SlideShapes 属性获取 title 对象并添加文本slide.shapes.title.text = '这是 PPT 文档的主标题'# 通过占位符集合索引获取副标题占位符对象并添加文本slide.shapes.placeholders[1].text = '这是副标题'# 保存 PPT 文档prs.save('example_text_add1.pptx')
代码执行后,生成的 PPT 文档内容如下图所示:

上面代码中有两个事项需要注意:
① 标题占位符也是占位符集合的一部分
SlideShapes 对象的 title 属性返回标题占位符对象,如果没有标题则返回 None。标题占位符对象通常是占位符集合的第一个元素。上例采用 Title Slide 布局,主标题和副标题索引分别为 0、1,所以代码中
# 使用 SlideShapes 属性获取 title 对象并添加文本slide.shapes.title.text = '这是 PPT 文档的主标题'
与下面代码等同
# 使用占位符集合索引获取标题占位符并添加文本slide.shapes.placeholders[0].text = '这是 PPT 文档的主标题'
② 幻灯片对象可直接获取占位符集合
Slide 对象的 placeholders属性返回所有占位符集合,所以上面代码中
# 通过占位符集合索引获取副标题占位符对象并添加文本slide.shapes.placeholders[1].text = '这是副标题'
与下面代码等同
# 直接从幻灯片对象获取通过占位符集合slide.placeholders[1].text = '这是副标题'
具体使用哪种用法取决于实际业务需求和开发者习惯,可根据实际情况进行选择。
小编提示: 利用版式占位符是最规范的方法,通过修改这些占位符,生成的 PPT 易于后续手动编辑且风格统一。 占位符定位由母版 / 版式预定义位置,其自动继承母版主题样式,占位符文本通常直接赋值 text 属性,代码编辑简单但布局受限于版式。 注意:使用占位符时,务必确认其是否存在(是否为 None),如果不存在会导致报错。 |
受文章篇幅所限,下文将继续介绍 Python 处理 Office 文件的相关知识。
夜雨聆风