利用Python自动生成PPT的示例详解

  • Post category:Python

首先了解一下本文所提到的Python库:

  1. python-pptx:一个用于生成Microsoft Power Point(.pptx)文件的Python库,可以用来自动化生成PPT。

接下来,我们以“利用Python自动生成博客年度总结PPT”为例来演示如何使用python-pptx自动化生成PPT。

一、安装python-pptx

使用pip进行安装

pip install python-pptx

二、新建pptx文件

新建PPT文件,首先需要导入pptx库,并创建一个Presentation对象来表示PPT文件

from pptx import Presentation

prs = Presentation()

三、添加第一页

向prs中添加第一页,添加一个标题和一个文本框。

title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)

title = slide.shapes.title
subtitle = slide.placeholders[1]

title.text = "2021年博客总结"
subtitle.text = "作者:XX"

四、添加内容页

接下来我们添加一些内容页,用于介绍年度博客的主题、目录等信息

bullet_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(bullet_slide_layout)

shapes = slide.shapes

title_shape = shapes.title
body_shape = shapes.placeholders[1]

title_shape.text = '2021年度总结'
tf = body_shape.text_frame
tf.text = '目录 \n 1. 博客阅读量 \n 2. 博客访问量'

五、添加表格

像我们最常见的PPT一样,加入一个表格

rows = 2
cols = 2
left = top = width = height = Inches(1.0)

table = shapes.add_table(rows, cols, left, top, width, height).table

for i in range(rows):
    for j in range(cols):
        table.cell(i, j).text = "row {}, cell {}".format(i+1, j+1)

做到这一步,已经能够生成一个简单的PPT来了,但显然内容太过简单,接下来我们重点介绍一个案例-自动生成金山词霸每日英语

六、生成每日英语pptx文件

具体实现方式:首先我们需要搭建好一个完整的爬虫,包括获取金山词霸上每日英语搭配例句页面、分析页面上的数据等。假设我们已经完成了爬虫的编写,接下来就是如何将数据转化为PPT了。

from pptx import Presentation
from pptx.util import Inches

# 省略一部分爬虫代码

# 创建PPT对象
prs = Presentation()

 # 添加标题页
title_slide_layout = prs.slide_layouts[0]
slide = prs.slides.add_slide(title_slide_layout)
title = slide.shapes.title
subtitle = slide.placeholders[1]
title.text = '金山词霸每日英语 '
subtitle.text = "日期 : {}".format(date)

# 添加内容页
bullet_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(bullet_slide_layout)
shapes = slide.shapes
title_shape = shapes.title
body_shape = shapes.placeholders[1]

title_shape.text = '每日英语'
bullet_slide_layout = prs.slide_layouts[5]
tf = body_shape.text_frame

for i in range(0, part_count, 2):
    left = Inches(1)
    top = Inches(2 + i * gap)
    width = Inches(8)
    height = Inches(1.5)
    tf = body_shape.text_frame
    tf.text = "{}\n{}\n{}\n{}".format(title[i], en[i], cn[i], title[i + 1])
    p = slide.shapes.add_picture(picture_list[i // 2], left, top, width=width, height=height)

multipart_response.close()

# 保存文件
prs.save('Daily-{}.pptx'.format(date))

以上代码会生成每日英语pptx文件,同时也会生成每日英语的图片,图片会嵌入到每日英语的pptx文件里面。

七、总结

以上就是利用python-pptx库生成PPT的详细教程,我们以生成博客年度总结PPT和金山词霸每日英语PPT为例,介绍了如何使用Python和python-pptx库自动化生成PPT。这也展示了Python在实际生产场景中产生的价值,能够大大提升人们的工作效率。