Python 自动化教程(4) : 自动生成PPT文件 Part 2 (干货)

系列教程:

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,因此要先请点击这里阅读上一篇。

office库简介

    本人用 python 写了一个 office库,用于办公自动化,功能是很强的, 包括:PPT自动生成、PPT转长图、PPT带语音播放、Word自动生成、Excel数据处理、图片处理、视频处理、office文档转为PDF、PDF加解密、加水印等等,都是实用的干货。

使用方法极简,大多数功能只需一行、两行代码

 使用PIP 安装office库:

请在命令行,通过PIP安装:

pip install jojo-office

office库的安装名称是 jojo-office

使用时, import office 即可。

import office

office库依赖库包括:python-docx, openpyxl, python-pptx, PyPDF4, reportlab, playsound等, 安装时将自动安装完成。

本文数据及源码文件下载请点这里

5、将 dictionay 作为数据源,填入PowerPoint模板文件

写一个模板PPT文件,编写变量。填入dictionay 数据,即可生成PPT。只是,以dictionary为数据源时,变量写法有一点不同。

模板文件 template6.pptx 如下,  变量名就是dictionary的key值。 注:图表的变量输入,要右键点击图表,点击“编辑数据”菜单,在数据表第一行写入变量。

Python 自动化教程(4) : 自动生成PPT文件 Part 2 (干货)_第1张图片

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如下:

Python 自动化教程(4) : 自动生成PPT文件 Part 2 (干货)_第2张图片

 说明:

该示例演示了, 在填入dictionay数据时,文字、图片、表格、图表的变量写法。

6、将 DataFrame对象作为数据源,填入PowerPoint模板文件

pandas库的 DataFrame 对象,也可以作为填充的数据源。

模板文件 template7.pptx 如下, 

Python 自动化教程(4) : 自动生成PPT文件 Part 2 (干货)_第3张图片

 变量写法:

1,   变量 {课程[0]}  表示 DataFrame 的 “课程”列的第0行

2, 对于表格,第一行写: 以 DataFrame的列名 为变量

图表的变量输入,要右键点击图表,点击“编辑数据”菜单,在数据表第一行写入变量。以 DataFrame的列名 为变量

7、多个数据源,多次填入PowerPoint文件

有时,有多个数据源,可以多次调用 fill() 多次填入数据。

模板文件 template8.pptx 如下, 

Python 自动化教程(4) : 自动生成PPT文件 Part 2 (干货)_第4张图片

 模板中, 表格中的 {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  如下:

Python 自动化教程(4) : 自动生成PPT文件 Part 2 (干货)_第5张图片

 可见, 经过两次调用fill()分别填入了 Excel文件数据 和 dictionary 数据。 多个数据源合成在一个PPT文件中了。

8、重复产生幻灯片

比如:有一个3个人的人员名单表,一张幻灯片的PPT模板,按人员数量每人生成一张幻灯片。

datafile.xlsx 的 Sheet1工作表有一个表格

Python 自动化教程(4) : 自动生成PPT文件 Part 2 (干货)_第6张图片

模板文件 template9.pptx 如下, 

Python 自动化教程(4) : 自动生成PPT文件 Part 2 (干货)_第7张图片

 模板中, 变量名前加了 @repeat 标志,表明这个变量需要重复生成幻灯片。  Sheet1!D1变量前还有一个 @ 符, 表明这个变量值是一张图片。

python 程序如下:

# 以 template9.pptx 为模板,创建 report.pptx 文件,  填入datafile.xlsx 文件数据, 保存
office.open_file("report.pptx", "template9.pptx").fill("datafile.xlsx").save()

生成的 report.pptx 如下:

Python 自动化教程(4) : 自动生成PPT文件 Part 2 (干货)_第8张图片

 可见,  模板中的一张幻灯片,变成了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的源码。

你可能感兴趣的:(Python,自动化,python)