应用背景
朋友,被每天手动更新ppt上的数据图表而烦恼。询问python如何自动化跑ppt的时候,才知道python原来还有“pptx”模块。
我们可以通过写脚本,来定时执行更新ppt内容
使用方法
在python文件中导入模块:
- from pptx import Presentation
- from pptx.util import Inches
但在cmd中有pip list显示的名称为
- python-pptx
- 文件选取与创建幻灯片 ;
from pptx import Presentation
from pptx.util import Inches
prs = Presentation(r'C://Users/zhuang/Desktop/test_ppt.pptx') #选择pptx文件,路径按照需求做更改
blank_slide_layout = prs.slide_layouts[3] #布局选用空页
#方括号内的数字,对应ppt中"开始"任务栏下的"新建幻灯片"的office主题(一共有11个,所以只能输入0~10)
slide = prs.slides.add_slide(blank_slide_layout) #用空页布局创建一页幻灯片
如果没有指明文件路径,直接写如下代码
prs = Presentation()
pre.save(filename.pptx)
则会在该python文件的目录下, 生成一份最原始的pptx模板文件(里面什么都没有)
- 插入图片 ;
left, top, width, height = Inches(13), Inches(1), Inches(5), Inches(5)
#left为距离ppt左侧13英寸,此时我的电脑上图片在ppt右侧能被看见一小部分
#top为距离ppt上侧1英寸
#width、height为图片的长宽、高,都为5英寸
#通过多次调整,大致感受图片的位置
img_path = r'C://Users/zhuang/Desktop/th.jpg' #图片路径
pic= slide.shapes.add_picture(img_path, left, top, width, height) #在ppt指定位置按预设值添加图片
- 插入文本框 ;
left, top, width, height = Inches(5),Inches(4),Inches(8),Inches(8)
tf = slide.shapes.add_textbox(left=left,top=top,width=width,height=height).text_frame
tf.text = "第一段" #插入第一段文本
tf.text = "第二段" #插入第二段文本
tf.text = "第三段" #插入第三段文本
#此时只会显示出"第三段"内容
left, top, width, height = Inches(3),Inches(6),Inches(8),Inches(2)
#重新设定参数后,会有新的文本框生成
tf = slide.shapes.add_textbox(left=left,top=top,width=width,height=height).text_frame
tf.paragraphs[0].text = "第二段" #插入第二段文本
- 保存
prs.save(r'C://Users/zhuang/Desktop/test_ppt.pptx')
#如果不写prs.save(),那么就相当于在ppt里操作了半天最后没保存就退出了
#如果保存路径与文件名写的是另一个文件,如prs.save(r'C://Users/zhuang/Desktop/test_test_ppt.pptx')
#则会按照新路径和新名字,生成一份新文件
#因此,周期性更新ppt可以:
#1、import datetime
#2、writing_time = datetime.datetime.now().strftime("%Y-%m-%d)
#3、psr.save(r'C://Users/zhuang/Desktop/{}test_ppt.pptx'.format(writing_time))
#比如今天是2019-08-04,那么生成的文件名就会是"2019-08-04test_ppt",就可以每天运行
介绍一下简单的使用吧,还可以通过pandas读取SQL后的结果,再通过matplotlib进行可视化展示保存为图片后传入ppt