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

Stata and Python 数据分析

一、导读

在实际工作中,经常需要批量处理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 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 # 制作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.placeholdersfor 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进行美化,快动手制作吧!

END

如果你想学习编程给大家分享一份Python学习资料,里面的内容都是适合零基础小白的笔记和资料,不懂编程也能听懂、看懂。如果需要的话直接划到文末免费获得,让我们一起学习!

在这里插入图片描述

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

Python所有方向路线就是把Python常用的技术点做整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、学习软件

工欲善其事必先利其器。学习Python常用的开发软件都在这里了,给大家节省了很多时间。
在这里插入图片描述

三、全套PDF电子书

书籍的好处就在于权威和体系健全,刚开始学习的时候你可以只看视频或者听某个人讲课,但等你学完之后,你觉得你掌握了,这时候建议还是得去看一下书籍,看权威技术书籍也是每个程序员必经之路。

在这里插入图片描述

四、入门学习视频

我们在看视频学习的时候,不能光动眼动脑不动手,比较科学的学习方法是在理解之后运用它们,这时候练手项目就很适合了。
在这里插入图片描述

四、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。

在这里插入图片描述

五、清华编程大佬出品《漫画看学Python》

用通俗易懂的漫画,来教你学习Python,让你更容易记住,并且不会枯燥乏味。
在这里插入图片描述

配套600集视频:

在这里插入图片描述

六、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

在这里插入图片描述
在这里插入图片描述
如果你也想和我一起学习Python,欢迎关注我留个言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/642394.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

05章【面向对象(下)】

文章目录 继承继承的基本概念继承的限制继承小结子类的实例化过程方法的重写super关键字继承的应用示例final关键字 抽象类接口多态性instanceof关键字抽象类和接口的应用抽象类应用—模板方法模式接口应用—策略模式 Object类模式简单工厂模式静态代理模式适配器模式 内部类数…

策略模式【结合Spring框架实践】

Hello!~大家好啊,很高兴我们又见面了,今天我们一起学习设计模式–【策略模式】 初次对此模式不懂的,或者想偷懒的,我强烈建议大家跟着我的一起把概念和代码一起敲一遍!~为啥子??因为我就是这样学会的,哈哈哈! 1.首先我们看下此模式的整体UML图 selector:选择器又叫做上下文co…

Netty篇章(1)—— 核心原理介绍

终于进入到Netty框架的环节了,前面介绍了大量的Java-NIO的内容,核心的内容Selector、Channel、Buffer、Reactor掌握了,那么学起来Netty也是水到渠成的事情。如果没有掌握前面的内容那么学Netty会非常吃力,下面讲解Netty核心原理与…

关于 LLM,你了解多少?

LLM定义 大语言模型(LLM)是一种基于大量文本数据训练的深度学习模型。它的主要功能是生成自然语言文本或理解语言文本的含义。这些模型可以处理多种自然语言任务,如文本分类、问答、对话等,是通向人工智能的一条重要途径。 LLM发…

美创荣登“2023大数据产业年度最具投资价值”榜单

近日,由上海市经济和信息化委员会、上海市科学技术委员会指导,数据猿和上海大数据联盟主办的“第六届金猿季&魔方论坛——大数据产业发展论坛”在沪隆重召开,并重磅揭晓《2023大数据产业年度最具投资价值》榜单。 美创科技凭借在数据安全…

k8s-kubectl常用命令

一、基础命令 1.1 get 查询集群所有资源的详细信息,resource包括集群节点、运行的Pod、Deployment、Service等。 1.1.1 查询Pod kubectl get po -o wid 1.1.2 查询所有NameSpace kubectl get namespace 1.1.3 查询NameSpace下Pod kubectl get po --all-namespaces…

JAVA 学习 面试(二)多线程篇

Java多线程 线程池 线程池原理 创建方式:newFixedThreadPool (固定数目线程的线程池)、newCachedThreadPool(可缓存线程的线程池)、newSingleThreadExecutor(单线程的线程池)、newScheduledThreadPool(定时及周期执行的线程池)、new ThreadPoolExecutor() &#x…

Elasticsearch 常用信息

简述 本文针对 Elasticsearch(简称ES)集群6.x版本出现故障时,可通过提供的命令进行排查。 1、集群健康状态 集群健康状态状态说明red不是所有的主要分片都可用。表示该集群中存在不可用的主分片。可以理解为某个或者某几个索引存在主分片丢失…

AI破局之路:一名猎头高管的AI自学之旅——公众号

AI破局之路:一名猎头高管的AI自学之旅——公众号。 我是周知,有8年猎头行业经验深耕各类顶级科技企业。 2023年,应该有很多同行离开这个行业吧. 毕竟我们面临着前所未有的挑战。猎头行业的每一个参与者,无论是初入职场的猎头新人、…

2024最新科普:文件加密软件功能大盘点

随着信息化时代的到来,数据安全问题越来越受到人们的关注。 文件加密作为一种重要的数据保护手段,被广泛应用于企业和个人用户中。 本文将对文件加密软件的功能进行大盘点,帮助大家了解这一安全领域的知识。 一、文件加密软件的定义 文件加…

【STM32】USB程序烧录需要重新上电 软件复位方法

文章目录 一、问题二、解决思路2.1 直接插拔USB2.2 给芯片复位 三、解决方法3.1 别人的解决方法3.2 在下载界面进行设置 一、问题 最近学习STM32的USB功能,主要是想要使用虚拟串口功能(VCP),发现每次烧录之后都需要重新上电才可以…

FRRouting学习(一) 配置日志文件

以配置isis event事件日志为例 1、在配置之前,/var/log/frr路径下是没有文件的: 2、在vtysh config之下输入:log file /var/log/frr/isisd.log debugging 后面的debugging表示日志级别,可以根据自己修改 3、配置好了之后&#xf…

Operation

contents 服务器一、相关概念1.1 云服务器与实例1.2 关于域名解析延时与80端口1.3 关于备案1.4 关于SSL证书1.5 关于SSL证书的签发1.6 关于SSL证书的部署1.7 关于LNMP和LAMP1.8 关于bt面板 二、单服务器单一级域名多网站2.1 创建多个二级域名2.2 解析二级域名绑定到服务器上2.3…

基于SpringBoot Vue求职招聘系统

大家好✌!我是Dwzun。很高兴你能来阅读我,我会陆续更新Java后端、前端、数据库、项目案例等相关知识点总结,还为大家分享优质的实战项目,本人在Java项目开发领域有多年的经验,陆续会更新更多优质的Java实战项目&#x…

工业设备管理系统:助力企业实现数字化转型

随着工业4.0和智能制造的快速发展,数字化转型已成为企业提升竞争力、适应市场变化的必然选择。工业设备管理系统作为数字化转型的关键组成部分,能够为企业提供实时监控、数据分析、预警和远程控制等功能,助力企业实现数字化转型的目标。 一、…

debian12.4配置

文章目录 debian12.4配置概述笔记将非root用户添加到sudo组更换国内源配置ssh的客户端访问关闭屏保END debian12.4配置 概述 在虚拟机中装了一个debian12.4, 想配置ssh客户端连接, 出了问题. 配置乱了, 还好长了个心眼, 做了快照. 发现2个问题: debian12.4默认安装完, 有ss…

mysql生成最近24小时整点时间临时表

文章目录 生成最近24小时整点生成最近30天生成最近12个月 生成最近24小时整点 SELECT-- 每向下推1行, i比上次减去1b.*, i.*,DATE_FORMAT( DATE_SUB( NOW(), INTERVAL ( -( i : i - 1 ) ) HOUR ), %Y-%m-%d %H:00 ) AS time FROM-- 目的是生成12行数据( SELECTa FROM( SELECT…

LINUX服务之YUM仓库

1. YUM概述 YUM基于RPM包构建的软件更新机制 可以自动解决依赖关系 所有软件包由集中的YUM软件仓库提供 YUM支持软件源 搭建yum支持的的软件源主要有以下三种: 本地yum:file://… 网络yum,又分为HTTP服务器:http…

UE5.2、CesiumForUnreal实现加载GeoJson绘制单面

文章目录 前言一、实现目标二、实现过程1.实现原理2.数据读取3.三角剖分3.具体代码 4.蓝图测试 前言 UE5、CesiumForUnreal实现加载GeoJson绘制单面(Polygon)功能(StaticMesh方式) 一、实现目标 通过读取本地的Geojson数据&…

IP地址组成

一、简介 ​ IP地址由四段组成,每个字段是一个字节,即4个字节、 每个字节有8位,最大值是255(256:0~255),是全世界范围是唯一的 32 位(4个字节 * 8位)的标识符。 ​ IP地址由两部分组成&#x…