接上文Python开发从零开始-50.34-Office 文档处理,本文小编与大家分享 Python 处理 Office 文档的相关知识。
(2)添加图片
1)在幻灯片中自由添加图片
SlideShapes 对象的 add_picture() 方法用于将图片添加到幻灯片指定位置。该方法原型为:
add_picture( image_file: str | IO[bytes], left: Length, top: Length, width: Length | None = None, height: Length | None = None) |
参数解释:
image_file:字符串或文件流对象(字节数组),图片文件路径名或图片文件流对象(字符数组);
left:Length 对象,左边距;
top:Length对象,上边距;
width:可选,Length 对象,宽度;
height:可选,Length 对象,高度;
width 和 height 可选效果说明:若只传递一个参数,另一个按原图比例自动缩放;若都不传递,使用图片原始尺寸;
返回值:pptx.shapes.picture.Picture 对象。
在幻灯片中添加图片的代码示例如下:
from pptx import Presentationfrom pptx.util import Inches# 创建一个新 PPT 文档prs = Presentation()# 如果 PPT 文档中只有一个母版,可以直接获取该母版的版式集合layouts = prs.slide_layouts# 从版式集合中获取 Title Only 版式对象layout = layouts.get_by_name('Title Only')# 添加新幻灯片slide = prs.slides.add_slide(layout)# 设置幻灯片标题slide.shapes.title.text = '自由添加图片示例'# 图片的左边距left = Inches(2)# 图片的上边距top = Inches(2)# 图片的宽度width = Inches(4)# 在幻灯片中添加图片,只传递 width 参数,height 参数将按原图比例缩放pic = slide.shapes.add_picture('dog.png', left=left, top=top, width=width)# 保存 PPT 文档prs.save('example_add_picture.pptx')
代码执行后,生成 PPT 文档内容如下图所示:

2)使用占位符添加图片
pptx.shapes.placeholder.PicturePlaceholder 对象表示图片占位符,该对象对应类型为 PP_PLACEHOLDER.PICTURE 的占位符。注意:在默认版式中,只有 Picture with Caption 版式才有该对象。
使用 PicturePlaceholder 对象的 insert_picture() 方法可以在图片占位符添加图片,图片将自动填充。该方法原型为:
insert_picture(image_file) |
参数解释:
image_file:字符串或文件流对象(字节数组),图片文件路径名或图片文件流对象(字符数组);
返回值:PlaceholderPicture 对象;
使用占位符添加图片的代码示例如下:
from pptx import Presentationfrom pptx.enum.shapes import PP_PLACEHOLDER# 创建一个新 PPT 文档prs = Presentation()# 如果 PPT 文档中只有一个母版,可以直接获取该母版的版式集合layouts = prs.slide_layouts# 从版式集合中获取 Picture with Caption 版式对象layout = layouts.get_by_name('Picture with Caption')# 添加新幻灯片slide = prs.slides.add_slide(layout)# 遍历当前幻灯片中所有占位符for p in slide.placeholders:# 判断当前占位符是否是图片占位符(PicturePlaceholder 对象)if p.placeholder_format.type == PP_PLACEHOLDER.PICTURE:p.insert_picture('dog.png')# 保存 PPT 文档prs.save('example_add_picture1.pptx')
代码执行后,生成的 PPT 文档内容如下图所示:

3)关于占位符添加图片的注意事项
① 图片占位符对象类型为 PP_PLACEHOLDER.PICTURE,需要在对占位符对象进行操作前进行判断。如果使用幻灯片的 shapes 属性遍历所有图形时,需要同时判断是否为占位符和是否为图片占位符。
② 大家在母版视图中可以看到有些版式中,可能存在显示 6 个图标(图片 / 表格 / 图表 / SmartArt / 剪贴画 / 视频)的通用内容占位符,该占位符类型为 PP_PLACEHOLDER.OBJECT,并不支持使用 insert_picture() 方法插入图片,网上教程或 AI 工具提供的绝大部分代码均为错误演示。
受文章篇幅所限,下文将继续介绍 Python 处理 Office 文件的相关知识。