跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客我的书AI学习GitHub 精选镜像AI 生图工具UI配色美学关于
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
PythonPPT制作

Python 使用 python-pptx 库实现 PPT 自动化生成与编辑

如何使用 Python 的 python-pptx 库进行 PPT 文件的自动化操作。内容包括安装配置、创建基础幻灯片、插入图表与表格、加载模板生成报告以及修改现有演示文稿的方法。通过具体代码示例,展示了如何设置标题、副标题、调整样式及保存文件,帮助开发者利用脚本提升办公效率。

忘忧发布于 2025/2/6更新于 2026/9/1283 浏览
Python 使用 python-pptx 库实现 PPT 自动化生成与编辑

前言

在日常办公中,我们经常需要创建或修改 PowerPoint 演示文稿。利用 Python 的 python-pptx 模块,可以实现 PPT 文件的自动化生成、内容填充及样式调整,从而大幅提升工作效率。

本文将详细介绍如何使用 python-pptx 模块安装配置、创建基础幻灯片、插入图表与表格、加载模板生成报告,以及如何修改现有的演示文稿文件。

1. 环境准备

python-pptx 是 Python 处理 .pptx 文件的第三方库,支持读写操作。使用前需在终端安装依赖:

pip install python-pptx

安装完成后,可通过以下命令确认版本:

pip show python-pptx

2. 创建基础幻灯片

以下示例演示如何创建一个包含标题和副标题的基础 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")

3. 在 PPT 中添加图表

通过 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')

4. 使用模板生成 PPT

加载现有模板文件,保留原有样式,仅替换数据内容。这适用于生成标准化的报告。

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')

5. 修改现有 PPT 文件

除了新建,我们常需修改已有文件。打开文件后遍历幻灯片进行修改,最后保存。

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')

6. 文本样式与图片插入

6.1 设置字体样式

可以通过 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)  # 蓝色

6.2 插入图片

使用 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)

7. 最佳实践与注意事项

  1. 备份原文件:在执行修改操作前,建议先备份原始 .pptx 文件,防止数据丢失。
  2. 路径问题:确保代码运行目录下的文件路径正确,或使用绝对路径。
  3. 资源释放:虽然 Python 会自动管理内存,但在处理大型 PPT 时,建议显式关闭对象或及时保存。
  4. 兼容性:生成的文件基于 Open XML 标准,通常兼容 Microsoft Office 2007 及以上版本。

通过上述方法,您可以灵活地控制 PPT 的内容与结构,实现办公文档的批量自动化处理。

目录

  1. 前言
  2. 1. 环境准备
  3. 2. 创建基础幻灯片
  4. 创建 Presentation 对象
  5. 获取标题版式布局 (Layout 0 通常是标题页)
  6. 添加新幻灯片
  7. 获取标题和副标题占位符
  8. 设置文本内容
  9. 保存文件
  10. 3. 在 PPT 中添加图表
  11. 使用空白版式 (Layout 5)
  12. 准备数据
  13. 定义图表位置和大小 (单位:英寸)
  14. 添加图表
  15. 4. 使用模板生成 PPT
  16. 加载模板文件
  17. 添加新幻灯片
  18. 设置标题
  19. 准备表格数据
  20. 添加表格
  21. 填充表头
  22. 填充数据行
  23. 添加图表
  24. 5. 修改现有 PPT 文件
  25. 遍历所有幻灯片
  26. 保存修改后的文件
  27. 6. 文本样式与图片插入
  28. 6.1 设置字体样式
  29. 假设已获取到 title 对象
  30. 6.2 插入图片
  31. 7. 最佳实践与注意事项

更多推荐文章

查看全部
  • 国产 AI 智能体工具盘点:腾讯、阿里、字节等主流产品收录
  • nanobot 轻量级 AI Agent 框架实战:搭建 QQ 机器人与搜索扩展
  • VR 与具身智能融合:人形机器人的现实接口演进
  • Spring AI 调用大模型的几种方案实践
  • Visual Studio 使用 GitHub Copilot 与 IntelliCode 辅助编码
  • 医疗送药机器人三重链式编程技术解析:空间拓扑、动态决策与容错控制
  • 深度剖析 Rokid SLAM 算法:从传感器融合到空间重建的技术链路
  • 三款 GitHub 高星开源音乐播放与管理工具推荐
  • Python 依赖漏洞自动扫描工具
  • Linux 网络基础:协议分层与传输流程
  • 8 个高效 Python 数据分析技巧
  • Amazon Bedrock 模型微调实践:微调基础篇
  • 操作系统智能助手 OS Copilot 新功能测评
  • 基于 Python 和 Vue 的疫苗接种预约管理系统设计与实现
  • Windows 安装 Python 后 CMD 命令行无法识别命令
  • 程序员如何系统学习数据结构与算法
  • DeepSeek-R1 大模型基于 MS-Swift 框架的部署、推理与微调实践
  • Python 实现 AI 绘画用户评价自动分类与报告生成
  • VSCode 精准禁用 Copilot:按语言与场景灵活配置
  • Linux 系统(CentOS/Ubuntu)Docker CE 安装全流程详解

相关免费在线工具

  • curl 转代码

    解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online