首先了解一下本文所提到的Python库:
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在实际生产场景中产生的价值,能够大大提升人们的工作效率。