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.rhkb.cn/news/244037.html

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

相关文章

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…

【Python从入门到进阶】47、Scrapy Shell的了解与应用

接上篇《46、58同城Scrapy项目案例介绍》 上一篇我们学习了58同城的Scrapy项目案例,并结合实际再次了项目结构以及代码逻辑的用法。本篇我们来学习Scrapy的一个终端命令行工具Scrapy Shell,并了解它是如何帮助我们更好的调试爬虫程序的。 一、Scrapy Sh…

CTF CRYPTO 密码学-5

题目名称:山岚 题目描述: 山岚 f5-lf5aa9gc9{-8648cbfb4f979c-c2a851d6e5-c} 解题过程: Step1:根据题目提示栅栏加密 分析 观察给出的密文发现有f、l、a、g等字符有规律的夹杂的密文中间,看出都是每3个字符的第1…

P9232 [蓝桥杯 2023 省 A] 更小的数

[蓝桥杯 2023 省 A] 更小的数 终于本弱一次通关了一道研究生组别的题了[普及/提高−] 一道较为简单的双指针题,但一定有更好的解法. 题目描述 小蓝有一个长度均为 n n n 且仅由数字字符 0 ∼ 9 0 \sim 9 0∼9 组成的字符串,下标从 0 0 0 到 n − 1 n-1 n−1&a…

k8s使用ingress实现应用的灰度发布升级

v1是1.14.0版本nginx ,实操时候升级到v2是1.20.0版本nginx,来测试灰度发布实现过程 一、方案:使用ingress实现应用的灰度发布 1、服务端:正常版本v1,灰度升级版本v2 2、客户端:带有请求头versionv2标识的请求访问版…

【Linux】vim 操作指令详解

Linux 1 what is vim ?2 vim基本概念3 vim的基本操作 !3.1 vim的快捷方式3.1.1 复制与粘贴3.1.2 撤销与剪切3.1.3 字符操作 3.2 vim的光标操作3.3 vim的文件操作 总结Thanks♪(・ω・)ノ感谢阅读下一篇文章见!…

Git教程学习:09 Git分支

文章目录 1 分支的简介2 分支的相关操作2.1 分支的创建2.2 分支的切换2.3 分支的合并2.4 分支推送到远程2.5 分支的删除2.6 分支的重命名 3 分支开发工作流程3.1 长期分支3.2 短期分支 1 分支的简介 几乎所有的版本控制系统都以某种形式支持分支。使用分支意味着我们可以把我们…

使用DockerFile构建镜像与镜像上传

目录 前言:为什么要使用Dockerfile ? DockerFile构建镜像 1、构建基础对象 2、Dockerfile文件结构 3、构建Dockerfile文件镜像 二、镜像上传(阿里云) 前言:为什么要使用Dockerfile ? 首先Dockerfile …

网安防御保护防火墙初使用

要求 搭建之后 配置如下: 首先看要求是使用总公司部分则,先配置总公司的防火墙,注意配置总公司防火墙进入G0/0/0口的IP有个默认192.168.0.1 24,但是我们的云(cloud)上增加的端口绑定网卡IP为192.168.100.1…

React Router v6 改变页面Title

先说正事再闲聊 1、在路由表加个title字段 2、在index包裹路由 3、在App设置title 闲聊: 看到小黄波浪线了没 就是说默认不支持title字段了 出来的提示, 所以我本来是像下面这样搞的,就是感觉有点难维护,就还是用上面的方法了 …

高效工作必备神器:这款在线绘图软件完美替代Visio!

Visio是什么软件? Visio是微软公司开发的一款专业化的流程图绘制辅助工具,主要用于帮助IT和商务人员对复杂信息、系统和流程进行可视化处理、分析和交流。Visio提供了丰富的绘图功能,用户可以利用它创建各种类型的图表,包括但不限…

如何在Docker下部署MinIO存储服务通过Buckets实现文件的远程上传

📑前言 本文主要是Linux下通过Docker部署MinIO存储服务实现远程上传的文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 &#…

Linux操作系统——理解文件系统

预备知识 到目前为止,我们所学习到的关于文件的操作,全部都是基于文件被打开,被访问,访问期间比较重要的有重定向,缓冲区,一切皆文件,当我们访问完毕的时候需要将文件关闭,关闭时那…

SpringBoot:Bean生命周期自定义初始化和销毁

🏡浩泽学编程:个人主页 🔥 推荐专栏:《深入浅出SpringBoot》《java项目分享》 《RabbitMQ》《Spring》《SpringMVC》 🛸学无止境,不骄不躁,知行合一 文章目录 前言一、Bean注解指…

【服务器】安装Docker环境

目录 🌺【前言】 🌼1. 打开Xshell软件 🌻2. 安装Docker环境 ①:下载docker.sh脚本 ②:列出下载的内容 ③:执行一下get-docker.sh文件,安装docker ④:运行docker服务 ⑤&…

linux环境开发工具---yum与vim

1.Linux软件包管理器yum 1.1什么是软件包 在学习linux过程中,我们常常会遇到某些指令用不了的时候,原因除了权限问题外,还有可能是你当前的linux环境并没有安装相应的软件包。而在Linux下载安装软件的办法有两个,一个是先下载所需…

力扣1143. 最长公共子序列(动态规划)

Problem: 1143. 最长公共子序列 文章目录 题目描述思路解题方法复杂度Code 题目描述 思路 我们先假设已经将两个字符串转换为两个char类型的数组(t1,t2)便于比较 1.如果t1[i] t2[j],有三种决策:(i1,j1)&a…

微信小程序如何获取当前日期时间

Hello大家好!我是咕噜铁蛋,获取当前日期时间是小程序中经常会用到的一个功能。因此,在本文中,我通过科技手段给大家收集整理了下,今天我将向大家介绍如何在微信小程序中获取当前日期时间的方法,并分享一些实…

【Unity】URP报错Object reference not set to an instance of an object

使用URP之后,Unity报错:显示不正常 NullReferenceException: Object reference not set to an instance of an object UnityEngine.Rendering.Universal.UniversalAdditionalCameraData.get_cameraStack () (at Library/PackageCache/com.unity.render-p…

VSCode 插件推荐

前言 关于开发用的插件就不做赘述了,网上面有很多文章都做了推荐,本文推荐几个好看的插件。 文件图标主题 Vscode icons Material Icon Theme 字体主题 推荐 One Dark Pro 其他 推荐一个生成好看代码的网址 https://carbon.now.sh/