在实际工作中,经常需要批量处理Office文件,比如需要制作一个几十页的PPT进行产品介绍时,一页一页地制作不仅麻烦而且格式可能不统一。那么有什么办法可以一键生成PPT呢?Python提供的pptx 包就可以用来自动化处理ppt。
python-pptx是一个用于创建和编辑Microsoft PowerPoint(.pptx) 文件的Python库。它能够自动生成演示文稿、幻灯片和幻灯片中的内容,如文本、图片、表格和图表。以下是一些常用的python-pptx命令和功能的简介。
(1)安装并导入
python-pptx托管在PyPI上,可以直接使用pip安装然后需要从pptx模块中导入Presentation类来开始创建和编辑PowerPoint演示文稿。
pip install python-pptxfrom pptx import Presentation
(2)创建演示文稿
通过创建Presentation对象,导入一个新的PowerPoint演示文稿。
ppt = Presentation()
(3)选择幻灯片布局
在创建新幻灯片之前,可以选择一个幻灯片布局。slide_layouts属性包含了不同的布局选项,可以根据需要选择其中一个。
slide_layout = ppt.slide_layouts[0]
(4)添加新幻灯片
使用add_slide方法添加一个新幻灯片,并传入选定的幻灯片布局。
slide = ppt.slides.add_slide(slide_layout)
(5)设置幻灯片标题和内容
通过获取幻灯片中的title和placeholders,可以设置标题和内容
title = slide.shapes.titletitle.text = "标题"content = slide.shapes.placeholders[1]content.text = "内容"
(6)添加图片
使用add_picture方法可以将图片插入到幻灯片中。需要先从 pptx.util 模块中导入Inches,用于在使用python-pptx库创建或编辑 PowerPoint 演示文稿时,以英寸为单位指定对象的位置和大小。例如:
from pptx.util import Inchesleft = Inches(1) # 图片左上角的横向位置top = Inches(2) # 图片左上角的纵向位置width = Inches(3) # 图片宽度height = Inches(2) # 图片高度slide.shapes.add_picture("image.jpg", left, top, width, height)
(7)添加表格
使用add_table方法可以在幻灯片中添加表格,可以指定表格的行数、列数、位置和大小。
from pptx.util import Inchesleft = Inches(1)top = Inches(2)width = Inches(4)height = Inches(2)table = slide.shapes.add_table(rows, cols, left, top, width, height).table
(8)保存 PPT
最后,使用save方法将创建的演示文稿保存为一个文件,以指定的文件名保存在当前工作目录中。
ppt.save("演示文稿.pptx")
二、批量生成PPT
学习完制作 PPT 的一些基础命令后,接着我们来看如何通过读取 Excel 数据批量生成幻灯片。假设需要进行旅游景点的介绍,首先准备填充PPT 的数据,这里收集到了我国十大旅游城市信息,包含城市名,介绍,景点和美食 4 个字段。内容如下:
然后需要在 PPT 中批量插入对应的图片,这里将收集到的十张图片存放在文件夹 “图片” 中。
接着新建一个 PPT 模板,首先打开视图→幻灯片母版,然后选择第一张幻灯片用于制作标题页。第二张幻灯片用于内容的制作:按照顺序依次插入城市、介绍、景点和美食 4 个占位符,并空出相应位置用于后面放置图片,此外根据需要可以对布局和文字进行美化。第三页用于制作结束页,最后保存为“模板” PPT。形式如下:
下面,我们进入实战阶段。具体步骤为:导入相关模板→读取Excel数据→读取PPT模板→制作标题页→制作内容页(插入信息和图片)→制作结束页→保存
import pandas as pd # 读取数据import os # 读取图片from pptx import Presentation # 制作PPTfrom pptx.util import Inches # 设置位置和大小data = pd.read_excel("旅游城市.xlsx") # 读取旅游城市信息city = data.to_dict('records') # 将数据转换为字典形式print(city)
结果如下:
ppt = Presentation("模板.pptx") # 读取PPT模板layout = ppt.slide_layouts # 获取所有幻灯片布局images = r".\图片" # 设置图片路径# 设置标题页First_slide_layout = ppt.slide_layouts[0] # 使用模板中第一个幻灯片的布局并创建标题页First_slide = ppt.slides.add_slide(First_slide_layout)# 设置标题和副标题title = First_slide.shapes.titlesubtitle = First_slide.placeholders[1]title.text = "十大旅游城市介绍"subtitle.text = "介绍人:XX"# 设置中间介绍内容for x in city: # 使用模板中第二个幻灯片的布局制作中间内容 slide = ppt.slides.add_slide(layout[1]) # 当前幻灯片中所有的占位符 placeholders = slide.shapes.placeholders for i,j in enumerate(placeholders): if i == 0: j.text = x["城市"] # 插入城市名 # 插入图片 img_path = os.path.join(images, f'{x["城市"]}.jpg') left = Inches(1.2) # 设置图片左上角的横向位置 top = Inches(2) # 设置图片左上角的纵向位置 width = Inches(4) # 设置图片宽度 height = Inches(4.5) # 设置图片高度 j = slide.shapes.add_picture(img_path, left, top, width, height) elif i == 1: j.text = x["介绍"] # 插入城市介绍内容 elif i == 2: j.text = x["景点"] # 插入景点信息 elif i == 3: j.text = x["美食"] # 插入美食信息# 设置结尾页Last_slide_layout = ppt.slide_layouts[2] # 使用模板中第三个幻灯片的布局制作结尾页Last_slide = ppt.slides.add_slide(Last_slide_layout)title = Last_slide.shapes.titletitle.text = "感谢观看!"# 保存 ppt.save("旅游城市介绍.pptx")# 设置标题和副标题
最终制作出的 PPT 效果如下:
感兴趣的小伙伴们还可以根据需要对PPT进行美化,快动手制作吧!
学好 Python 不论是就业还是做副业赚钱都不错,这里给大家分享一份Python全套学习资料,包括学习路线、软件、源码、视频、面试题等等,都是我自己学习时整理的,希望可以对正在学习或者想要学习Python的朋友有帮助!
👉CSDN大礼包:《python入门&进阶学习资源包》免费分享
Python全套学习资料👇👇👇
(部分资料截取图)
① Python全套书籍和视频秘籍
其中包含了Python基础入门、爬虫、数据分析、web开发,这里一共有几十个吧,可能不是很多,但对于初学者来说应该足够。
里面的知识点都是比较干练的,时长也是正常的40分钟一节课。
②Python数据分析入门到精通
(视频课程+课件+源码)
③零基础也能懂的python办公自动化教程
④Python面试集锦和简历模板
学会了Python之后,有了技能就可以出去找工作了!下面这些面试题是都来自阿里、腾讯、字节等一线互联网大厂,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
⑤Python副业兼职路线
学会Python以后,还可以在各大兼职平台接单赚钱,各种兼职渠道+兼职注意事项+如何和客户沟通,我都整理成文档了。
上述所有资料 ⚡️ ,朋友们如果有需要《全套0基础入门到进阶的Python学习资料》的,可以扫描下方二维码免费领取 🆓