Python 处理 PPT 文件的实用姿势
好看的皮囊千篇一律,有趣的灵魂两百多斤。
和Word、Excel承载数据的能力相比,PPT的应用重点在于表演。
比如一场发布会、一场演说、一次产品展示、一次客户沟通……
正常情况下,用PowerPoint等软件制作PPT是明智的选择,简单实用。
但如果需要批量或者自动化处理PPT文件时,用Python就能节省很多时间。
比如:
用PPT批量生成一些发布会风格的图片
从大量PPT中提取表格数据
用PPT批量制作简单动画
处理PPT的Python库,主要有两类:
pywin32
,调用操作系统上已装好的PPT软件。python-pptx
,根据OpenXML规范解析XML文件。
日常处理推荐使用python-pptx
模块,它基于PIL
处理图片,基于xlsxwriter
处理图表。
但如果需要批量转换PPT文件格式,如导出成PDF,那就得用pywin32
,而且只能在Windows操作系统上操作。
本文主要介绍python-pptx
用法,模块安装:pip install python-pptx
。
注意:python-pptx
暂时还不支持SmartArt和动画。如果需要批量生成,就得自己操作XML文件中对应内容。
基本使用
PPT中基本元素包括:
slide(幻灯片):一个PPT由一系列slide构成。
slide_master(幻灯片母版):母版可定义主题样式基准。
slide_layouts(模版):创建幻灯片时可选择的模版。
shape(形状):包含一切可视元素,通过
slide.shapes
可访问slide内元素。placeholder(占位符):在模板中占据位置,如图片、文字等。
paragraph(段落):文本段,可以直接设置整段文本样式。
text(文本):段落内的文本,通过
paragraph.add_run()
生成。
图片和图形
PPT中图相关元素有3类:
picture:图像,单位是Inch
autoshape:形状,如流程图
chart:图表,如直方图、饼图
生成流程图
生成图表
注意,关于图形类的处理,python-pptx
模块暂不支持下面两种场景:
SmartArt
,微软并没有公开发布过其标准格式,目前只有PowerPoint软件具备这个功能。PPT文件按页导出成图片,这也是PowerPoint软件功能,在Windows上可以借助
win32com
等模块调用PPT软件功能实现。
生成数据表格
PPT中也可以插入表格,只不过表格功能非常有限,仅用于展示。
在自动生成PPT时,有时候需要把外部数据复制到PPT内,可以读取数据后在PPT中插入表格。
比如:
导出素材和数据
导出图片和幻灯片备注
之前说过,想提取docx
、xlsx
、pptx
文件里的图片素材,可以先把文件解压缩,然后到对应目录查看图片。其中pptx
文件解压后,图片在ppt/media
文件夹内。
当然,也可以通过Python自动导出。
导出表格和及图表中的数据
从上面导出图片的过程可以看到,想要导出一个元素,关键是识别出它的类型。
所以,导出表格和图表的关键在于:识别出table
和chart
。
另外,有2个注意点:
table
的数据可以直接获取,但注意python-pptx
中表格索引从0开始(openpyxl
从1开始)chart
的数据在其内部,需要通过plots.categories
提取
总结
本文重点介绍了python-pptx
的使用方法,包括基本文件读写、图形图像处理,以及表格图表内部数据的抽取等。
虽然PPT能装载的数据有限,但它的表达能力丰富,关键是看怎样应用。不同的配色、布局、形状、内容,会产生完全不同的效果。
最后,可以尝试下用PPT制作海报卡片,在PPT中批量生成slide是件容易的事,再打开软件导出图片即可。比如把豆瓣上的高分电影,随机配上金句文案:
顺便再生成一个电影评分榜。
想了解的可以入群获取,前100名免费。
版权声明: 本文为 InfoQ 作者【程一初】的原创文章。
原文链接:【http://xie.infoq.cn/article/f7a4783d25d2dc1eb88b4dd88】。文章转载请联系作者。
评论