用 Python 制作 Powerpoint 演示文稿

简介

不管你爱不爱,Powerpoint都被广泛应用于商务场合。文章不会争辩Powerpoint的优点,而是向你展示如何用Python使创建Powerpoint幻灯片自动化,以便去除掉在使用Powerpoint过程中一些单调乏味的工作。

幸运的是,有一个优秀的用于创建和更新PowerPoint文件的Python库:python-pptx。该库的API非常详细,所以很容易使用。唯一棘手的部分是理解PowerPoint文档的结构,包括各种总体布局和元素。一旦你了解了基础知识,自动创建你自己的PowerPoint幻灯片会相对容易很多。本文将通过一个例子研究和分析一些pandas的Excel数据,创建一些可嵌入在PowerPoint文件里的图表。

PowerPoint文件的基础

Python-pptx可以创建空白PowerPoint文件,但大多数人会喜欢在一个根据自己的内容设定好的的模板上工作。Python-pptx的API支持这个预定义的过程并且非常简单,只要你知道关于你的模板的几件事就好了。

在深入一些代码示例之前,你需要了解两个关键部分:幻灯片布局占位符。在下面的图片你可以看到两种不同的布局以及模板占位符的一个例子,你可以把内容填充在其中。

在下面的图片中,你可以看到,我们使用的是布局0,在幻灯片的第一页有一个占位符。

 

这幅图中,我们使用了外观完全不同的布局1。

 

为了让您更轻松地使用自己的模板,我创建了一个简单的独立脚本,这个脚本使用一个模板,并用各种元素来标记这个模板。

我不会一行一行地解释下面的代码,但是你可以自己在github上看analyze_ppt.py,下面是完成主要工作的函数:

这个函数的基本流程是通过循环并创建每一个包含在源PowerPoint文件中的布局实例。然后在每一页幻灯片上,将填充一个标题(如果有的话)。最后,它会遍历所有包含在模板中的占位符并显示占位符索引以及类型。

如果你想自己试试:

参考输入输出文件,看看你得到什么。

创建你自己的幻灯片

对于数据收集和分析,我将从Pandas Pivot Table复制一些通用Excel报告的分析。这篇文章对Pandas数据操作解释得更加细致,所以这将使你在深入代码之前便对它非常了解,这对你肯定非常有用。

让我们从程序的输入和基本命令开始:

在我们创建命令行参数之后,我们将源Excel文件读入Pandas数据框架,然后,我们使用数据框架作为输入来创建Pivot_table总结:

如果这对你来说没有意义,请参考Pandas Pivot Table生成的通用Excel报告。

接下来的一个分析是建立一个简单的销售业绩表:

这里是一个缩小版的图片:

我们有一张表格以及一个完成了的透视表。现在我们将要把这些信息嵌入到一个基于给定模版的新建的PowerPoint文件中。

在我继续深入之前,有几件事需要我们注意。你需要知道你想要怎么样的布局,以及你想填充什么样的内容。在看analyze_ppt.py输出时我们知道,标题幻灯片是布局0,它拥有一个标题而且在占位符1处有一个副标题。

这是我们用来创建我们的输出Powerpoint文件的函数的开始部分:

此代码创建了一个基于我们的输入文件的新的演示文稿,在幻灯片上添加了主标题和副标题,看起来就是这样的:

很酷吧?

下一步将我们的图片插入到幻灯片里去。

从我们前面的分析中我们知道,我们要用幻灯片布局的第8种,所以我们创建了一个新的幻灯片,添加了一个标题,然后在占位符1的位置上添加了一个图片、最后一步在占位符2处添加了副标题。

这就是我们的杰作:

在演示的最后部分,我们将根据他们的销售业绩为每一个管理者创建一个表格。

这就是我们将要实现的样子:

在PowerPoint中创建表格既有优点也有缺点。优点是,现在我们有API来创建一个表格了,缺点是你不能轻易地使用内置的API来将一个Pandas数据框架变成表格。然而,我们很幸运,有人已经为我们做了所有的工作并且实现Pandas到Powerpoint的转换

这段出色的代码需要一个数据框,并将其转换为PowerPoint兼容表。我擅自截取了一部分在我的程序里。源代码有更多的功能,我没有使用,但是我建议你可以从仓库里check out一份,并用在你自己的代码中。

该代码将每一个“manager”从数据透视表中取出,并且构建了一个包含汇总数据的简单数据框。然后使用df_to_table将数据框转换为一个PowerPoint兼容表。

如果你想自己运行,完整的代码是这个样子:

所有的相关文件都可以在 github repository上找到。

结语

我真的很喜欢使用Python来解决现实业务问题的原因之一是,我常常惊喜于Python强大丰富的功能可以解决我的难题。在这种特定的情况下,使用PowerPoint不单单是一种享受,它在许多情景中还是必需品。

读完这篇文章后,你应该知道,下次你被要求创建一批PowerPoint报告就有希望了。请记住这篇文章,看看你是否能找到一种方法来自动完成单调乏味的工作!

2 12 收藏 2 评论

关于作者:LynnShaw

微博:@萧萧萧宁 个人主页 · 我的文章 · 34

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部