用Python + AI,自动生成PPT汇报材料
一、先说个扎心的事实
你有没有这种感觉——
周一早上刚到公司,领导突然说:"上午开会,把上周的数据做个PPT汇报一下。"
你:???
手忙脚乱打开PowerPoint,复制粘贴数据,调格式,调配色,对齐文字……
折腾了2小时,终于做出来一个勉强能看的PPT。
结果领导看了一眼说:"数据图表不够直观,重新做。"
心态崩了。
今天这篇文章,就是来解决这个问题的。学完之后,你会惊呼:
原来PPT可以这样生成?!
二、Python凭什么能生成PPT?
python-pptx:Python操作PPT的神器
很多人不知道,Python有一个专门操作PPT的库——python-pptx。
用它你可以:
最关键的是:配合AI,你甚至不需要记住函数怎么用。告诉AI你想做什么,它帮你写代码。
为什么用Python生成PPT?
--- 三、3个真实场景,看完就想动手
场景1:自动生成数据汇报PPT
以前: 打开PPT,一个一个加数据,调格式,改颜色,2小时起步 现在: 运行脚本,10分钟自动生成精美PPT 代码实现:from pptx import Presentation from pptx.util import Inches, Pt from pptx.dml.color import RgbColor from pptx.enum.text import PP_ALIGN import pandas as pd 创建PPT
prs = Presentation() prs.slide_width = Inches(13.333) prs.slide_height = Inches(7.5) 添加标题页
slide_layout = prs.slide_layouts[6] # 空白布局 slide = prs.slides.add_slide(slide_layout) 添加标题
title_box = slide.shapes.add_textbox(Inches(0.5), Inches(2.5), Inches(12), Inches(1.5)) title_frame = title_box.text_frame title_para = title_frame.paragraphs[0] title_para.text = "月度销售数据汇报" title_para.font.size = Pt(54) title_para.font.bold = True title_para.font.color.rgb = RgbColor(0, 112, 192) title_para.alignment = PP_ALIGN.CENTER 添加副标题
subtitle_box = slide.shapes.add_textbox(Inches(0.5), Inches(4.2), Inches(12), Inches(1)) subtitle_frame = subtitle_box.text_frame subtitle_para = subtitle_frame.paragraphs[0] subtitle_para.text = "2026年3月 | 销售部" subtitle_para.font.size = Pt(28) subtitle_para.font.color.rgb = RgbColor(89, 89, 89) subtitle_para.alignment = PP_ALIGN.CENTER 添加数据页
slide2 = prs.slides.add_slide(prs.slide_layouts[6]) 标题
title_box2 = slide2.shapes.add_textbox(Inches(0.5), Inches(0.3), Inches(12), Inches(0.8)) title_frame2 = title_box2.text_frame title_para2 = title_frame2.paragraphs[0] title_para2.text = "各区域销售业绩" title_para2.font.size = Pt(36) title_para2.font.bold = True 添加表格
data = [ ["区域", "销售额(万)", "增长率"], ["华东区", "1280", "+15%"], ["华南区", "1050", "+12%"], ["华北區", "980", "+8%"], ["西南区", "720", "+18%"], ] rows = len(data)cols = len(data[0])table = slide2.shapes.add_table(rows, cols, Inches(1), Inches(1.5), Inches(11), Inches(4)).table
填充数据
for i, row_data in enumerate(data): for j, cell_text in enumerate(row_data): cell = table.cell(i, j) cell.text = cell_text paragraph = cell.text_frame.paragraphs[0] paragraph.font.size = Pt(18) paragraph.alignment = PP_ALIGN.CENTER # 表头样式 if i == 0: paragraph.font.bold = True paragraph.font.color.rgb = RgbColor(255, 255, 255) cell.fill.solid() cell.fill.fore_color.rgb = RgbColor(0, 112, 192) 保存
prs.save('销售汇报.pptx') print("✅ PPT已生成:销售汇报.pptx")
运行结果:✅ PPT已生成:销售汇报.pptx
场景2:从Excel自动提取数据生成PPT
这是最实用的场景——数据在Excel里,一键生成PPT汇报材料。
from pptx import Presentation from pptx.util import Inches, Pt from pptx.dml.color import RgbColor import pandas as pd 1. 读取Excel数据
df = pd.read_excel('销售数据.xlsx') print(f"读取到 {len(df)} 条数据") 2. 创建PPT
prs = Presentation() 3. 创建标题页
slide = prs.slides.add_slide(prs.slide_layouts[6]) title_box = slide.shapes.add_textbox(Inches(0.5), Inches(3), Inches(12), Inches(1.5))title_frame = title_box.text_frametitle_frame.paragraphs[0].text = "销售数据分析报告"title_frame.paragraphs[0].font.size = Pt(60)title_frame.paragraphs[0].font.bold = Truetitle_frame.paragraphs[0].font.color.rgb = RgbColor(0, 80, 160)title_frame.paragraphs[0].alignment = 1 # 居中
4. 按产品分类生成数据页
products = df['产品'].unique() for product in products: product_data = df[df['产品'] == product] total_sales = product_data['销售额'].sum() # 新建一页 slide = prs.slides.add_slide(prs.slide_layouts[6]) # 页面标题 title_box = slide.shapes.add_textbox(Inches(0.5), Inches(0.3), Inches(12), Inches(1)) title_frame = title_box.text_frame title_frame.paragraphs[0].text = f"产品分析:{product}" title_frame.paragraphs[0].font.size = Pt(40) title_frame.paragraphs[0].font.bold = True # 数据摘要 summary_box = slide.shapes.add_textbox(Inches(0.5), Inches(1.5), Inches(12), Inches(5)) summary_frame = summary_box.text_frame summary_frame.paragraphs[0].text = f"总销售额:{total_sales}万元" summary_frame.paragraphs[0].font.size = Pt(32)
5. 保存
prs.save('数据分析报告.pptx') print(f"✅ 报告已生成,共 {len(products)} 页")
场景3:批量生成个性化PPT
当你要给100个客户生成定制化方案时,Python的优势就体现出来了。
from pptx import Presentation from pptx.util import Inches, Pt import pandas as pd 读取客户列表
clients = pd.read_excel('客户列表.xlsx') prs_template = Presentation('方案模板.pptx')
for index, client in clients.iterrows(): # 复制模板 prs = Presentation('方案模板.pptx') # 替换占位符 for slide in prs.slides: for shape in slide.shapes: if shape.has_text_frame: for paragraph in shape.text_frame.paragraphs: for run in paragraph.runs: # 替换 {客户名} if '{客户名}' in run.text: run.text = run.text.replace('{客户名}', str(client['姓名'])) # 替换 {公司名} if '{公司名}' in run.text: run.text = run.text.replace('{公司名}', str(client['公司'])) # 保存个性化方案 filename = f"方案_{client['姓名']}_{client['公司']}.pptx" prs.save(filename) print(f"✅ 已生成:{filename}")
print(f"\n🎉 全部完成!共生成 {len(clients)} 份方案")
四、AI辅助:用Cursor/Windsurf快速写代码
方法1:让AI帮你生成基础代码
打开Cursor或Windsurf,输入:
帮我写一个Python脚本,功能是:
AI立刻给你生成完整代码!
方法2:遇到问题直接问AI
把报错信息复制给AI:
报错信息: [粘贴报错信息] 帮我分析哪里出了问题,应该怎么改?
AI会帮你找出问题并给出解决方案。
方法3:用AI优化现有代码
给AI这段代码,让它帮你优化:
""" 我的代码每次只能生成固定的表格, 能不能改成可以读取任意数据的通用模板? """
五、文末福利
我给你准备了一份可直接使用的PPT生成模板:
《一键生成汇报PPT.py》
> > 关注公众号,回复「PPT模板」即可领取!
六、往期回顾
👉 第一期:《连代码都没写过,如何用AI在7天内写出第一个Python程序》
👉 第二期:《用Python + AI,10分钟搞定Excel报表自动化》
关注「量子位开发手记」,每周一篇实战干货,陪你一起进化。
下期预告:《用Python + AI,自动生成周报月报》
让汇报材料从此不再占用你的周末!🚀
📅 文档更新时间:2026-04-01By 量子位开发手记 · 未经授权禁止转载—— 量子位开发手记 · 持续输出,不水文 ——