前言
在日常办公中,我们经常需要创建或修改 PowerPoint 演示文稿。利用 Python 的 python-pptx 模块,可以实现 PPT 文件的自动化生成、内容填充及样式调整,从而大幅提升工作效率。
本文将详细介绍如何使用 python-pptx 模块安装配置、创建基础幻灯片、插入图表与表格、加载模板生成报告,以及如何修改现有的演示文稿文件。
本文介绍了如何使用 Python 的 python-pptx 库进行 PPT 文件的自动化操作。内容包括安装配置、创建基础幻灯片、插入图表与表格、加载模板生成报告以及修改现有演示文稿的方法。通过具体代码示例,展示了如何设置标题、副标题、调整样式及保存文件,帮助开发者利用脚本提升办公效率。

在日常办公中,我们经常需要创建或修改 PowerPoint 演示文稿。利用 Python 的 python-pptx 模块,可以实现 PPT 文件的自动化生成、内容填充及样式调整,从而大幅提升工作效率。
本文将详细介绍如何使用 python-pptx 模块安装配置、创建基础幻灯片、插入图表与表格、加载模板生成报告,以及如何修改现有的演示文稿文件。
python-pptx 是 Python 处理 .pptx 文件的第三方库,支持读写操作。使用前需在终端安装依赖:
pip install python-pptx
安装完成后,可通过以下命令确认版本:
pip show python-pptx
以下示例演示如何创建一个包含标题和副标题的基础 PPT 文件。
from pptx import Presentation
# 创建 Presentation 对象
prs = Presentation()
# 获取标题版式布局 (Layout 0 通常是标题页)
title_slide_layout = prs.slide_layouts[0]
# 添加新幻灯片
slide = prs.slides.add_slide(title_slide_layout)
# 获取标题和副标题占位符
title = slide.shapes.title
subtitle = slide.placeholders[1]
# 设置文本内容
title.text = "Hello python-pptx Module!"
subtitle.text = "Python Automation with PPTX"
# 保存文件
prs.save("test_basic.pptx")
通过 ChartData 类可以定义数据并插入柱状图。以下是插入簇状柱形图的示例:
from pptx import Presentation
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE
from pptx.util import Inches
prs = Presentation()
# 使用空白版式 (Layout 5)
slide = prs.slides.add_slide(prs.slide_layouts[5])
# 准备数据
data = ChartData()
data.categories = ['Java', 'Python', 'JavaScript']
data.add_series('Series 1', (19.2, 21.4, 16.7))
# 定义图表位置和大小 (单位:英寸)
x, y, cx, cy = Inches(2), Inches(2), Inches(6), Inches(4.5)
# 添加图表
chart = slide.shapes.add_chart(
XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, data
).chart
prs.save('chart_example.pptx')
加载现有模板文件,保留原有样式,仅替换数据内容。这适用于生成标准化的报告。
from pptx import Presentation
from pptx.util import Cm
from pptx.chart.data import ChartData
from pptx.enum.chart import XL_CHART_TYPE, XL_LEGEND_POSITION
# 加载模板文件
prs = Presentation('template.pptx')
# 添加新幻灯片
slide = prs.slides.add_slide(prs.slide_layouts[5])
shapes = slide.shapes
# 设置标题
shapes.title.text = 'Monthly Report'
# 准备表格数据
name_objects = ["Object A", "Object B", "Object C"]
val_data = [(19.2, 21.4, 16.7), (22.3, 28.6, 15.2), (20.4, 26.3, 14.2)]
# 添加表格
rows, cols = 4, 4
table = shapes.add_table(rows, cols, Cm(3.5), Cm(12.5), Cm(24), Cm(6)).table
# 填充表头
table.cell(0, 1).text = name_objects[0]
table.cell(0, 2).text = name_objects[1]
table.cell(0, 3).text = name_objects[2]
# 填充数据行
for i, val in enumerate(val_data):
table.cell(i + 1, 0).text = f"AI_{i+1}"
for j, v in enumerate(val):
table.cell(i + 1, j + 1).text = str(v)
# 添加图表
chart_data = ChartData()
chart_data.categories = name_objects
for i, val in enumerate(val_data):
chart_data.add_series(f"Series {i+1}", val)
x, y, cx, cy = Cm(3.5), Cm(4.2), Cm(24), Cm(8)
graphic_frame = slide.shapes.add_chart(
XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
)
chart = graphic_frame.chart
chart.has_legend = True
chart.legend.position = XL_LEGEND_POSITION.TOP
prs.save('report_from_template.pptx')
除了新建,我们常需修改已有文件。打开文件后遍历幻灯片进行修改,最后保存。
from pptx import Presentation
prs = Presentation('existing_file.pptx')
# 遍历所有幻灯片
for i, slide in enumerate(prs.slides):
# 查找并修改标题
if slide.shapes.title:
slide.shapes.title.text = f"Slide {i + 1}: Modified"
# 遍历形状以修改其他文本框
for shape in slide.shapes:
if hasattr(shape, "text") and shape.text:
# 简单示例:将文本转为大写(实际场景可按需处理)
pass
# 保存修改后的文件
prs.save('modified_file.pptx')
可以通过 text_frame.paragraphs[0].font 属性设置字体名称、大小、加粗及颜色。
from pptx.util import Pt
from pptx.dml.color import RGBColor
# 假设已获取到 title 对象
title = slide.shapes.title
run = title.text_frame.paragraphs[0].runs[0]
run.font.name = 'Microsoft YaHei'
run.font.size = Pt(24)
run.font.bold = True
run.font.color.rgb = RGBColor(0, 0, 255) # 蓝色
使用 add_picture 方法将本地图片插入到幻灯片中。
from pptx.util import Inches
img_path = 'logo.png'
left = Inches(1)
top = Inches(1)
width = Inches(2)
height = Inches(1)
slide.shapes.add_picture(img_path, left, top, width=width, height=height)
.pptx 文件,防止数据丢失。通过上述方法,您可以灵活地控制 PPT 的内容与结构,实现办公文档的批量自动化处理。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online
通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online