Python 自动化办公:一键批量生成 PPT

一、导读

在实际工作中,经常需要批量处理Office文件,比如需要制作一个几十页的PPT进行产品介绍时,一页一页地制作不仅麻烦而且格式可能不统一。那么有什么办法可以一键生成PPT呢?Python提供的pptx 包就可以用来自动化处理ppt。

pytho****n-pptx是一个用于创建和编辑Microsoft PowerPoint(.pptx) 文件的Python库。它能够自动生成演示文稿、幻灯片和幻灯片中的内容,如文本、图片、表格和图表。以下是一些常用的python-pptx命令和功能的简介。

(1)安装并导入

python-pptx托管在PyPI上,可以直接使用pip安装然后需要从pptx模块中导入Presentation类来开始创建和编辑PowerPoint演示文稿。

pip install python-pptx
from 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)设置幻灯片标题和内容

通过获取幻灯片中的titleplaceholders,可以设置标题和内容

title = slide.shapes.title
title.text = "标题"

content = slide.shapes.placeholders[1]
content.text = "内容"
(6)添加图片

使用add_picture方法可以将图片插入到幻灯片中。需要先从 pptx.util 模块中导入Inches,用于在使用python-pptx库创建或编辑 PowerPoint 演示文稿时,以英寸为单位指定对象的位置和大小。例如:

from pptx.util import Inches

left = 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 Inches

left = 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 # 制作PPT
from 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.title
subtitle = 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.title
title.text = "感谢观看!"

# 保存 
ppt.save("旅游城市介绍.pptx")# 设置标题和副标题

最终制作出的 PPT 效果如下:

感兴趣的小伙伴们还可以根据需要对PPT进行美化,快动手制作吧!

感兴趣的小伙伴,赠送全套Python学习资料,包含面试题、简历资料等具体看下方。

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照下面的知识点去找对应的学习资源,保证自己学得较为全面。

img
img

二、Python必备开发工具

工具都帮大家整理好了,安装就可直接上手!img

三、最新Python学习笔记

当我学到一定基础,有自己的理解能力的时候,会去阅读一些前辈整理的书籍或者手写的笔记资料,这些笔记详细记载了他们对一些技术点的理解,这些理解是比较独到,可以学到不一样的思路。

img

四、Python视频合集

观看全面零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

img

五、实战案例

纸上得来终觉浅,要学会跟着视频一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

img

六、面试宝典

在这里插入图片描述

在这里插入图片描述

简历模板在这里插入图片描述

若有侵权,请联系删除

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值