免费编程软件「python+pycharm」
链接:https://pan.quark.cn/s/48a86be2fdc0
在快节奏的职场环境中,制作PPT常被视为耗时费力的重复劳动。但通过Python的python-pptx库,我们能用代码实现自动化生成——从添加文本、插入图片到生成图表,甚至批量生成定制化演示文稿。本文将以实战案例为核心,用通俗易懂的方式讲解如何用Python高效创建PPT。

Python操作PPT的核心工具是python-pptx库,它支持Office 2007及以上版本的.pptx文件。安装只需一行命令:
bash1pip install python-pptx安装完成后,可通过以下代码验证是否成功:
python1from pptx import Presentation
2prs = Presentation()
3prs.save("test.pptx")运行后会生成一个空白PPT文件,确认安装无误。
PPT的每张幻灯片都基于预设的“布局”(Layout),不同布局决定了占位符(如标题、文本框、图片框)的位置和数量。python-pptx提供了9种常用布局,索引从0到8:
例如,若需创建标题幻灯片,代码为:
python1from pptx import Presentation
2prs = Presentation()
3title_slide_layout = prs.slide_layouts[0] # 选择标题布局
4slide = prs.slides.add_slide(title_slide_layout) # 添加幻灯片
5title = slide.shapes.title # 获取标题框
6title.text = "Python自动化PPT" # 设置标题文本
7prs.save("title_slide.pptx")文本是PPT的核心元素,python-pptx支持通过占位符或自定义文本框添加文本,并可设置字体、颜色、对齐方式等。
python1from pptx import Presentation
2from pptx.util import Pt
3from pptx.dml.color import RGBColor
4
5prs = Presentation()
6bullet_slide_layout = prs.slide_layouts[1] # 选择标题+内容布局
7slide = prs.slides.add_slide(bullet_slide_layout)
8
9# 设置标题
10slide.shapes.title.text = "功能列表"
11
12# 设置内容(项目符号列表)
13content = slide.placeholders[1] # 获取内容占位符
14tf = content.text_frame
15tf.text = "核心功能:" # 首段文本
16
17# 添加项目符号
18p = tf.add_paragraph()
19p.text = "自动生成幻灯片"
20p.level = 1 # 缩进一级
21
22p = tf.add_paragraph()
23p.text = "支持多种格式"
24p.level = 1
25p.font.bold = True # 加粗
26p.font.color.rgb = RGBColor(0, 102, 204) # 蓝色
27
28prs.save("text_demo.pptx")此代码生成一张包含标题和项目符号列表的幻灯片,第二段文本为蓝色加粗。
若布局无占位符,或需自由定位文本,可手动添加文本框:
python1from pptx import Presentation
2from pptx.util import Inches, Pt
3from pptx.enum.text import PP_ALIGN
4
5prs = Presentation()
6blank_slide_layout = prs.slide_layouts[6] # 空白布局
7slide = prs.slides.add_slide(blank_slide_layout)
8
9# 添加文本框(位置:左1英寸,顶2英寸;宽6英寸,高1英寸)
10left = Inches(1)
11top = Inches(2)
12width = Inches(6)
13height = Inches(1)
14textbox = slide.shapes.add_textbox(left, top, width, height)
15
16# 设置文本
17tf = textbox.text_frame
18tf.text = "居中文本"
19p = tf.paragraphs[0]
20p.alignment = PP_ALIGN.CENTER # 居中对齐
21p.font.size = Pt(24) # 字体大小24磅
22
23prs.save("textbox_demo.pptx")图片是PPT中不可或缺的视觉元素。通过add_picture方法,可指定图片路径、位置和尺寸:
python1from pptx import Presentation
2from pptx.util import Inches
3
4prs = Presentation()
5slide = prs.slides.add_slide(prs.slide_layouts[5]) # 仅标题布局
6slide.shapes.title.text = "图片展示"
7
8# 插入图片(位置:左1英寸,顶1.5英寸;宽4英寸,高3英寸)
9img_path = "example.jpg" # 替换为实际图片路径
10left = Inches(1)
11top = Inches(1.5)
12width = Inches(4)
13height = Inches(3)
14slide.shapes.add_picture(img_path, left, top, width, height)
15
16prs.save("image_demo.pptx")关键点:
Inches()单位控制尺寸,1英寸≈2.54厘米。python-pptx支持柱状图、折线图等多种图表类型。生成图表需两步:定义数据源,添加图表到幻灯片。
python1from pptx import Presentation
2from pptx.chart.data import CategoryChartData
3from pptx.enum.chart import XL_CHART_TYPE
4from pptx.util import Inches
5
6prs = Presentation()
7slide = prs.slides.add_slide(prs.slide_layouts[5]) # 仅标题布局
8slide.shapes.title.text = "销售数据"
9
10# 定义图表数据
11chart_data = CategoryChartData()
12chart_data.categories = ['Q1', 'Q2', 'Q3', 'Q4']
13chart_data.add_series('产品A', (10, 15, 20, 25))
14chart_data.add_series('产品B', (5, 10, 15, 20))
15
16# 添加柱状图(位置:左1英寸,顶1.5英寸;宽6英寸,高4英寸)
17x, y, cx, cy = Inches(1), Inches(1.5), Inches(6), Inches(4)
18chart = slide.shapes.add_chart(
19 XL_CHART_TYPE.COLUMN_CLUSTERED, x, y, cx, cy, chart_data
20).chart
21
22prs.save("chart_demo.pptx")参数说明:
XL_CHART_TYPE.COLUMN_CLUSTERED:柱状图类型。x, y:图表左上角位置。cx, cy:图表宽度和高度。当需根据数据生成多张幻灯片时,可结合循环实现自动化。例如,根据城市数据生成介绍页:
python1from pptx import Presentation
2from pptx.util import Inches
3
4# 模拟数据
5cities = [
6 {"name": "北京", "intro": "首都,政治文化中心"},
7 {"name": "上海", "intro": "经济中心,国际化大都市"},
8 {"name": "广州", "intro": "商贸中心,粤文化发源地"}
9]
10
11prs = Presentation()
12for city in cities:
13 slide = prs.slides.add_slide(prs.slide_layouts[1]) # 标题+内容布局
14 slide.shapes.title.text = f"{city['name']}介绍"
15 content = slide.placeholders[1]
16 content.text = city['intro']
17
18prs.save("batch_cities.pptx")此代码生成3张幻灯片,每张包含城市名称和简介。
若企业有固定PPT模板,可通过Presentation('模板.pptx')加载模板,仅修改内容部分,确保风格一致:
python1from pptx import Presentation
2
3# 加载模板
4prs = Presentation('company_template.pptx')
5
6# 修改第一张幻灯片的标题
7slide = prs.slides[0]
8slide.shapes.title.text = "2025年第三季度报告"
9
10# 添加新幻灯片(基于模板中的布局)
11new_slide_layout = prs.slide_layouts[1] # 假设模板中布局1为内容页
12slide = prs.slides.add_slide(new_slide_layout)
13slide.shapes.title.text = "数据概览"
14slide.placeholders[1].text = "本季度销售额同比增长20%"
15
16prs.save("report_2025Q3.pptx")优势:
问题:运行代码后PPT中无图片,或报错FileNotFoundError。
原因:图片路径错误或文件不存在。
解决:
C:/images/example.jpg)。.jpg vs .png)。问题:文本超出文本框范围,未自动换行。 解决:
问题:按索引选择布局时,生成的幻灯片与预期不符。 原因:不同PPT模板的布局索引可能不同。 解决:
try-except循环测试索引:python1for i in range(len(prs.slide_layouts)): 2 try: 3 slide = prs.slides.add_slide(prs.slide_layouts[i]) 4 print(f"成功添加布局{i}") 5 except: 6 print(f"布局{i}无法添加")无论是季度报告、产品介绍还是教学课件,掌握Python生成PPT的技能,都能让工作更高效、更专业。从今天开始,用代码解放双手,让PPT制作成为一种享受!
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。