系列教程:
Python 自动化教程(1) 概述,第一篇 Excel自动化
Python 自动化教程(2) : Excel自动化:使用pandas库
Python 自动化教程(3) : 自动生成PPT文件 Part 1
Python 自动化教程(4) : 自动生成PPT文件 Part 2
Python 自动化教程(5) : 自动生成Word文件
Python 自动化教程(6) : PDF文件处理
上一篇,写了office库中 使用Excel数据 自动生成 PPT的方法。
本篇,继续介绍使用office库自动生成 PPT的其他形式。 如果没有看过上一篇的,应该不知道如何下載安裝office库、生成PPT,因此要先请点击这里阅读上一篇。
本人用 python 写了一个 office库,用于办公自动化,功能是很强的, 包括:PPT自动生成、PPT转长图、PPT带语音播放、Word自动生成、Excel数据处理、图片处理、视频处理、office文档转为PDF、PDF加解密、加水印等等,都是实用的干货。
使用方法极简,大多数功能只需一行、两行代码
请在命令行,通过PIP安装:
pip install jojo-office
office库的安装名称是 jojo-office
使用时, import office 即可。
import office
office库依赖库包括:python-docx, openpyxl, python-pptx, PyPDF4, reportlab, playsound等, 安装时将自动安装完成。
本文数据及源码文件下载请点这里
写一个模板PPT文件,编写变量。填入dictionay 数据,即可生成PPT。只是,以dictionary为数据源时,变量写法有一点不同。
模板文件 template6.pptx 如下, 变量名就是dictionary的key值。 注:图表的变量输入,要右键点击图表,点击“编辑数据”菜单,在数据表第一行写入变量。
python代码如下:
import office
data = {
"姓名": "Peter",
"年龄": 18,
"相片": "peter.jpg",
'学习': {
'课程': ['语文', '数学', '英语'],
'成绩': [95.3, 68, 75],
'评价': ['优', '差', '中']
}
}
# 以 template6.pptx 为模板,创建 report.pptx 文件, 填入data dict数据, 保存
office.open_file("report.pptx", "template6.pptx").fill(data).save()
生成PPT如下:
说明:
该示例演示了, 在填入dictionay数据时,文字、图片、表格、图表的变量写法。
pandas库的 DataFrame 对象,也可以作为填充的数据源。
模板文件 template7.pptx 如下,
变量写法:
1, 变量 {课程[0]} 表示 DataFrame 的 “课程”列的第0行
2, 对于表格,第一行写: 以 DataFrame的列名 为变量
图表的变量输入,要右键点击图表,点击“编辑数据”菜单,在数据表第一行写入变量。以 DataFrame的列名 为变量
有时,有多个数据源,可以多次调用 fill() 多次填入数据。
模板文件 template8.pptx 如下,
模板中, 表格中的 {Sheet1!B1} 等变量数据来自 Excel.
{姓名} {年龄} 等变量数据来自 dictionary
python 程序如下:
import office
person = {"姓名": "Peter", "年龄": 18, "相片": "peter.jpg"}
# 以template8.pptx为模板创建文件, 填入datafile.xlsx文件数据, 再填入person数据,保存
office.open_file("report.pptx", "template8.pptx").fill('datafile.xlsx').fill(person).save()
运行结果 生成report.pptx 如下:
可见, 经过两次调用fill()分别填入了 Excel文件数据 和 dictionary 数据。 多个数据源合成在一个PPT文件中了。
比如:有一个3个人的人员名单表,一张幻灯片的PPT模板,按人员数量每人生成一张幻灯片。
datafile.xlsx 的 Sheet1工作表有一个表格
模板文件 template9.pptx 如下,
模板中, 变量名前加了 @repeat 标志,表明这个变量需要重复生成幻灯片。 Sheet1!D1变量前还有一个 @ 符, 表明这个变量值是一张图片。
python 程序如下:
# 以 template9.pptx 为模板,创建 report.pptx 文件, 填入datafile.xlsx 文件数据, 保存
office.open_file("report.pptx", "template9.pptx").fill("datafile.xlsx").save()
生成的 report.pptx 如下:
可见, 模板中的一张幻灯片,变成了3张幻灯片,分别填入了 Excel表格中各行的数据,其中: Sheet1!D1 所在的数据 是图片文件名, 插入了图片。
本篇介绍了 使用office库自动生成PPT的进一步的方法。总结PPT自动生成的特点:
1, office库提供了强大的PPT生成功能。
2, 写一个模板PPT文件,编写变量。填入数据,即可生成PPT.
3,填入数据可以生成PPT的文字、表格、图表,可以插入图片
4, 数据可以放在Excel文件中。变量为 Excel的 {工作表!单元格} 。
5, 数据可以是 dictionary。变量为 键名,如:{key}。
6, 数据可以是 DataFrame。变量为 列名,如:{column} 。
7、对数据列表,支持重复生成幻灯片
8,PPT可以存为长图带水印、存为PDF。PPT可以带语音播放。
本文数据及源码文件下载请点这里
office库还有其他许多功能,下节课再讲。
office库还在开发完善中,偶有bug请见谅、或提改进。
有兴趣深入研究的,可以看office.py的源码。