上个月,有个做战略分析的同事跟我抱怨:领导要一份关于大疆创新的深度分析报告,要求有理论框架、有数据图表、还要 29 页排版整齐。
他用 PowerPoint 手工做了三天,改了八版,最后发现第 12 页和第 13 页的配色不统一,图表里的"营收"两个字变成了方块乱码,全文档的字体在换电脑打开后全变成了宋体。
我问他:你为什么不试试用 WorkBuddy 直接生成 PPT?
他愣了一下:AI 不是只能写文字吗?还能做 PPT?
答案是:能,而且能做得很专业。
我们不靠 AI "描述"一份 PPT,而是让 WorkBuddy 直接写出一个 Python 脚本,调用 `python-pptx` 库,生成真正的 `.pptx` 文件——字体、配色、图表、版式,全部代码控制,一次生成,永远一致。
上个月我们用这套方法,两天内产出了两份 29 页的大疆创新深度分析 PPT,还顺手把一份 15 页的课堂汇报 PPT 转成了 1.2 万字的论文格式 Word。今天我把整套方法拆给你。
任何一份好 PPT,骨架都比皮囊重要。
以"大疆创新分析"为例,我们没有上来就写代码,而是先跟 WorkBuddy 定分析框架。最终定的主线是:
商业现象 → 商业模式解构 → 盈利逻辑与单位经济 → 竞争壁垒的经济学解释 → 运营系统 → 市场与增长 → 全球价值链与风险边界 → 结论启示
这个框架不是拍脑袋想的,而是整合了四套管理学理论:后发赶超理论(Lee & Lim)、动态能力(Teece)、创新生态系统(Adner)、全球价值链(Gereffi),提出一个"生态驱动型后发赶超"的整合范式。
这一步花了我大概 20 分钟对话。WorkBuddy 输出的是一份结构化的章节清单,每一页该放什么内容、用什么图表,都列得清清楚楚。
关键点:框架定好之后,后面的代码只是"把框架画出来",不会跑偏。
这是最核心的一步。我们让 WorkBuddy 写一个 Python 脚本,用 `python-pptx` 来搭页面。
先设置画布和配色(这是"品牌感"的来源):
from pptx import Presentationfrom pptx.util import Inches, Ptfrom pptx.dml.color import RGBColorprs = Presentation()prs.slide_width = Inches(13.333)prs.slide_height = Inches(7.5)NAVY = RGBColor(0x14, 0x21, 0x3D) # 深海军蓝(主色)BLUE = RGBColor(0x3E, 0x6F, 0xC4) # 科技蓝AMBER = RGBColor(0xF5, 0xA6, 0x23) # 琥珀金(点缀)INK = RGBColor(0x22, 0x26, 0x2E) # 正文墨色然后,把"加一页""加一段文字""加一组要点"封装成可复用的函数。这样 29 页不是写 29 遍,而是调用 29 次:
def blank_slide(prs, bg=LIGHT): """新建一页空白幻灯片,设置背景色""" s = prs.slides.add_slide(prs.slide_layouts[6]) s.background.fill.solid() s.background.fill.fore_color.rgb = bg return sdef add_text(slide, x, y, w, h, text, size=14, bold=False, color=INK): """在指定位置加一个文本框""" tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)) tf = tb.text_frame p = tf.paragraphs[0] r = p.add_run(); r.text = text r.font.size = Pt(size); r.font.bold = bold r.font.color.rgb = color return tbdef add_bullets(slide, x, y, w, h, items, bold_lead=False): """加一组要点,支持'标题:内容'前半句加粗""" tb = slide.shapes.add_textbox(Inches(x), Inches(y), Inches(w), Inches(h)) tf = tb.text_frame for it in items: p = tf.add_paragraph() r = p.add_run(); r.text = "• " + it r.font.size = Pt(14) return tb有了这些"积木",搭一页内容页只需要几行:
s = blank_slide(prs, LIGHT)add_text(s, 0.92, 0.74, 11.6, 0.7, "摘要", size=27, bold=True, color=NAVY)add_bullets(s, 0.9, 1.8, 11.5, 4.5, [ "技术能力:飞控、云台、图传、视觉全栈自研", "商业模式:硬件引流、生态锁利的双层结构", "竞争壁垒:规模经济 + 网络效应 + 转换成本",], bold_lead=True)这一步的精髓:把重复的排版劳动交给函数,你只负责"内容"和"顺序"。改配色?改一个 `NAVY` 变量,全文档统一变。加一页?调一次函数。
PPT 里最费时间的就是图表。手动画柱状图,数据一改全重画。
我们的做法:用 `matplotlib` 写几段函数,数据写死在代码里,一键出图。比如大疆营收增长柱状图:
import matplotlibmatplotlib.use("Agg") # 无界面模式,服务器也能跑import matplotlib.pyplot as pltdef chart_revenue(): years = [2013, 2014, 2015, 2016, 2017, 2022, 2024] vals = [8.3, 30.7, 59.8, 97.8, 175.7, 301.4, 800.0] fig, ax = plt.subplots(figsize=(8.6, 4.3)) bars = ax.bar([str(y) for y in years], vals, color="#14213D") for b, v in zip(bars, vals): ax.text(b.get_x()+b.get_width()/2, v+12, f"{v:g}", ha="center") ax.set_title("大疆营收增长轨迹(2013–2024,亿元)", fontsize=12.5, fontweight="bold") fig.savefig("charts_dji/revenue.png", dpi=150, bbox_inches="tight") plt.close(fig)一个坑必须提前说:matplotlib 默认不支持中文,图表里的汉字会变成方块。解决方法是在脚本开头注册中文字体:
from matplotlib import font_managerfont_manager.fontManager.addfont(r"C:\Windows\Fonts\simhei.ttf") # 黑体plt.rcParams["font.sans-serif"] = ["SimHei"]plt.rcParams["axes.unicode_minus"] = False # 让负号正常显示这样生成的图表,中文标签清清楚楚。我们一共为大疆做了 5 张图:整合框架流程图、营收增长柱状图、全球份额甜甜圈图、净利率对比图、低空经济规模图。
坑一:python-pptx 里设置中文字体要用 `_r`
这是最隐蔽的一个。你想给某段文字设中文字体(比如微软雅黑),直觉是改 `run` 对象的属性。但 `python-pptx` 的 Run 底层 XML 元素叫 `run._r`,不是 Word 文档里的 `run._element`。
我们第一版脚本在封面页就崩了,报错说找不到 `rPr` 节点。改法:
def set_run_font(run, name="微软雅黑", size=14, bold=False, color=INK): run.font.name = name run.font.size = Pt(size) rPr = run._r.get_or_add_rPr() # 注意是 _r,不是 _element rFonts = rPr.find(qn("a:rFonts")) if rFonts is None: rFonts = OxmlElement("a:rFonts") rPr.append(rFonts) rFonts.set(qn("a:latin"), name) rFonts.set(qn("a:hAnsi"), name) rFonts.set(qn("a:eastAsia"), name) # 东亚字符集也要设不设 `eastAsia`,中文字体在别人的电脑上打开就会 fallback 成宋体。这个细节,决定了你的 PPT 在客户电脑上是不是还是"你的 PPT"。
坑二:helper 函数形参要对齐
我们第二版大疆 PPT(商业模式视角)初版报错 `TypeError: add_text() got an unexpected keyword argument 'bold_lead'`。原因:`add_text` 没有 `bold_lead` 参数,只有 `add_bullets` 有。把业务函数和 helper 函数的形参对齐,这类错误就不会发生。
脚本写好,一条命令跑完:
python build_dji.py29 页、宽屏、深蓝配色、5 张数据图表、统一微软雅黑——一份专业级分析报告 PPT 就生成了。
我们先后生成了两版:
同一套方法,换一套框架和图表,半天出第二版。如果是手工改 PowerPoint,这至少是两天。
我们还用 `python-pptx` 提取了一份 15 页课堂汇报 PPT 的全文,再用 `python-docx` 生成了 1.2 万字的论文格式 Word(含摘要、目录、六章节、30 条名词解释表、7 张嵌入图表)。
思路一模一样:提取内容 → 用脚本按论文结构重组 → 输出 `.docx`。字体、图表位置、表格样式,全代码控制。
传统做 PPT,你是在"画"每一页。用 WorkBuddy + python-pptx,你是在"定义"每一页——定义配色、定义版式、定义组件,然后让代码把它画出来。
前者改一页动全身,后者改一个变量全局统一。前者三天出一份还带乱码,后者两天出两份还能再转 Word。
这不只是效率问题。当排版变成代码,你的分析报告才真正有了"工程化"的底气:可复现、可版本管理、可批量生产。
下次领导再要一份深度分析 PPT,别打开 PowerPoint 了。打开 WorkBuddy,跟它说:"帮我写个 python-pptx 脚本。"
本文提及的生成脚本与素材,均来自前期"大疆创新分析"与"胖东来商业模式解码"两个实战项目。