title: “影刀RPA PPT自动生成用数据驱动演示文稿”date: 2026-07-01author: 林焱影刀RPA PPT自动生成用数据驱动演示文稿每周周报要做PPT月度总结要做PPT数据图表要截图贴进PPT……这种重复劳动最适合自动化。影刀配合python-pptx可以自动生成规范的PPT数据更新了一键刷新。什么情况用什么适合自动生成PPT的场景周报月报格式固定只换数据和图表销售业绩汇报从数据库读数据自动生成多区域数据汇总结构相同只是数据不同竞品分析报告采集完数据自动组装不适合的场景PPT需要精心设计排版自动生成的太丑内容完全无规律每次都不一样拼多多店群自动化报活动上架怎么做基础方法从模板克隆生成做好PPT模板用python-pptx修改数据克隆生成多份。【影刀操作】添加【Python】指令安装依赖importsubprocess subprocess.run([pip,install,python-pptx,matplotlib],capture_outputTrue)添加【Python】指令生成PPTfrompptximportPresentationfrompptx.utilimportInches,Ptfrompptx.dml.colorimportRGBColorimportmatplotlib.pyplotaspltimportio# 读取模板prsPresentation(rC:\模板\周报模板.pptx)# 修改第1页标题幻灯片索引从0开始slideprs.slides[0]forshapeinslide.shapes:ifshape.has_text_frame:forparainshape.text_frame.paragraphs:forruninpara.runs:if{{week}}inrun.text:run.textrun.text.replace({{week}},第27周)if{{date_range}}inrun.text:run.textrun.text.replace({{date_range}},2024.06.24-2024.06.30)# 在第2页插入图表图片slide2prs.slides[1]# 先用matplotlib生成图表保存为图片fig,axplt.subplots(figsize(8,4))weeks[第23周,第24周,第25周,第26周,第27周]sales[120,135,128,142,158]ax.bar(weeks,sales,color#2196F3)ax.set_title(周销售额趋势万元)ax.set_ylabel(销售额万元)# 保存图表到内存bufio.BytesIO()plt.savefig(buf,formatpng,dpi150,bbox_inchestight)buf.seek(0)plt.close()# 插入图片到PPTleftInches(1)topInches(1.5)widthInches(8)slide2.shapes.add_picture(buf,left,top,widthwidth)# 保存prs.save(rC:\输出\2024第27周周报.pptx)print(PPT生成成功)进阶方法批量生成多个区域的PPT从Excel读取各区域数据批量生成报告。【影刀操作】添加【读取Excel】指令读取数据按区域分组添加【循环】指令每个区域生成一个PPT在循环内添加【Python】指令frompptximportPresentationfrompptx.utilimportInches,Ptimportcopy regioncurrent_region_data[region]prsPresentation(rC:\模板\区域报告模板.pptx)# 遍历所有幻灯片替换所有占位符forslideinprs.slides:forshapeinslide.shapes:ifnotshape.has_text_frame:continueforparainshape.text_frame.paragraphs:forruninpara.runs:run.textrun.text.replace({{region}},region)run.textrun.text.replace({{total_sales}},str(current_region_data[total_sales]))run.textrun.text.replace({{growth_rate}},f{current_region_data[growth_rate]:.1%})output_pathfC:\\区域报告\\{region}_2024Q2报告.pptxprs.save(output_path)print(f已生成{output_path})实用技巧添加数据表格到PPT【影刀操作】frompptximportPresentationfrompptx.utilimportInches prsPresentation()slideprs.slides.add_slide(prs.slide_layouts[5])# 空白布局# 添加表格rows,cols5,3tableslide.shapes.add_table(rows,cols,Inches(1),Inches(1.5),Inches(8),Inches(3)).table# 设置表头headers[产品,销量,增长率]fori,headerinenumerate(headers):table.cell(0,i).textheader# 填入数据data[(产品A,1,200,15%),(产品B,980,8%),(产品C,760,-3%),(产品D,1,450,22%),]forrow_idx,row_datainenumerate(data,1):forcol_idx,valueinenumerate(row_data):table.cell(row_idx,col_idx).textvalue prs.save(rC:\输出\含表格的PPT.pptx)有什么坑坑1模板样式没有继承用python-pptx新建幻灯片时字体、颜色都是默认的和模板不一样。解决方法不要新建幻灯片在现有模板幻灯片上修改内容只替换文本和图片不改结构。坑2图片插入位置偏差TEMU店群矩阵自动化运营核价报活动不同PPT模板的尺寸不同宽屏16:9 vs 标准4:3图片位置计算出来位置不对。解决方法先读取prs.slide_width和prs.slide_height基于实际尺寸计算位置。坑3中文字体显示异常matplotlib生成的图表中文显示为方块。解决方法importmatplotlib matplotlib.rcParams[font.sans-serif][SimHei,Microsoft YaHei]matplotlib.rcParams[axes.unicode_minus]False坑4PPT文件被占用影刀第二次运行时上次生成的PPT还开着保存时报文件被占用的错误。解决方法生成时用时间戳命名文件或者先检查文件是否被打开importpsutildefis_file_open(filepath):forprocinpsutil.process_iter([open_files]):try:forfinproc.open_files():iff.pathfilepath:returnTrueexcept:passreturnFalse总结PPT自动生成的关键在模板设计把固定样式做好用占位符标记变量位置影刀负责替换数据和插入图表。一套周报模板做好后以后每周5分钟自动生成再也不用手工复制数据了。
影刀RPA PPT自动生成:用数据驱动演示文稿
title: “影刀RPA PPT自动生成用数据驱动演示文稿”date: 2026-07-01author: 林焱影刀RPA PPT自动生成用数据驱动演示文稿每周周报要做PPT月度总结要做PPT数据图表要截图贴进PPT……这种重复劳动最适合自动化。影刀配合python-pptx可以自动生成规范的PPT数据更新了一键刷新。什么情况用什么适合自动生成PPT的场景周报月报格式固定只换数据和图表销售业绩汇报从数据库读数据自动生成多区域数据汇总结构相同只是数据不同竞品分析报告采集完数据自动组装不适合的场景PPT需要精心设计排版自动生成的太丑内容完全无规律每次都不一样拼多多店群自动化报活动上架怎么做基础方法从模板克隆生成做好PPT模板用python-pptx修改数据克隆生成多份。【影刀操作】添加【Python】指令安装依赖importsubprocess subprocess.run([pip,install,python-pptx,matplotlib],capture_outputTrue)添加【Python】指令生成PPTfrompptximportPresentationfrompptx.utilimportInches,Ptfrompptx.dml.colorimportRGBColorimportmatplotlib.pyplotaspltimportio# 读取模板prsPresentation(rC:\模板\周报模板.pptx)# 修改第1页标题幻灯片索引从0开始slideprs.slides[0]forshapeinslide.shapes:ifshape.has_text_frame:forparainshape.text_frame.paragraphs:forruninpara.runs:if{{week}}inrun.text:run.textrun.text.replace({{week}},第27周)if{{date_range}}inrun.text:run.textrun.text.replace({{date_range}},2024.06.24-2024.06.30)# 在第2页插入图表图片slide2prs.slides[1]# 先用matplotlib生成图表保存为图片fig,axplt.subplots(figsize(8,4))weeks[第23周,第24周,第25周,第26周,第27周]sales[120,135,128,142,158]ax.bar(weeks,sales,color#2196F3)ax.set_title(周销售额趋势万元)ax.set_ylabel(销售额万元)# 保存图表到内存bufio.BytesIO()plt.savefig(buf,formatpng,dpi150,bbox_inchestight)buf.seek(0)plt.close()# 插入图片到PPTleftInches(1)topInches(1.5)widthInches(8)slide2.shapes.add_picture(buf,left,top,widthwidth)# 保存prs.save(rC:\输出\2024第27周周报.pptx)print(PPT生成成功)进阶方法批量生成多个区域的PPT从Excel读取各区域数据批量生成报告。【影刀操作】添加【读取Excel】指令读取数据按区域分组添加【循环】指令每个区域生成一个PPT在循环内添加【Python】指令frompptximportPresentationfrompptx.utilimportInches,Ptimportcopy regioncurrent_region_data[region]prsPresentation(rC:\模板\区域报告模板.pptx)# 遍历所有幻灯片替换所有占位符forslideinprs.slides:forshapeinslide.shapes:ifnotshape.has_text_frame:continueforparainshape.text_frame.paragraphs:forruninpara.runs:run.textrun.text.replace({{region}},region)run.textrun.text.replace({{total_sales}},str(current_region_data[total_sales]))run.textrun.text.replace({{growth_rate}},f{current_region_data[growth_rate]:.1%})output_pathfC:\\区域报告\\{region}_2024Q2报告.pptxprs.save(output_path)print(f已生成{output_path})实用技巧添加数据表格到PPT【影刀操作】frompptximportPresentationfrompptx.utilimportInches prsPresentation()slideprs.slides.add_slide(prs.slide_layouts[5])# 空白布局# 添加表格rows,cols5,3tableslide.shapes.add_table(rows,cols,Inches(1),Inches(1.5),Inches(8),Inches(3)).table# 设置表头headers[产品,销量,增长率]fori,headerinenumerate(headers):table.cell(0,i).textheader# 填入数据data[(产品A,1,200,15%),(产品B,980,8%),(产品C,760,-3%),(产品D,1,450,22%),]forrow_idx,row_datainenumerate(data,1):forcol_idx,valueinenumerate(row_data):table.cell(row_idx,col_idx).textvalue prs.save(rC:\输出\含表格的PPT.pptx)有什么坑坑1模板样式没有继承用python-pptx新建幻灯片时字体、颜色都是默认的和模板不一样。解决方法不要新建幻灯片在现有模板幻灯片上修改内容只替换文本和图片不改结构。坑2图片插入位置偏差TEMU店群矩阵自动化运营核价报活动不同PPT模板的尺寸不同宽屏16:9 vs 标准4:3图片位置计算出来位置不对。解决方法先读取prs.slide_width和prs.slide_height基于实际尺寸计算位置。坑3中文字体显示异常matplotlib生成的图表中文显示为方块。解决方法importmatplotlib matplotlib.rcParams[font.sans-serif][SimHei,Microsoft YaHei]matplotlib.rcParams[axes.unicode_minus]False坑4PPT文件被占用影刀第二次运行时上次生成的PPT还开着保存时报文件被占用的错误。解决方法生成时用时间戳命名文件或者先检查文件是否被打开importpsutildefis_file_open(filepath):forprocinpsutil.process_iter([open_files]):try:forfinproc.open_files():iff.pathfilepath:returnTrueexcept:passreturnFalse总结PPT自动生成的关键在模板设计把固定样式做好用占位符标记变量位置影刀负责替换数据和插入图表。一套周报模板做好后以后每周5分钟自动生成再也不用手工复制数据了。