【办公自动化】使用Python批量生成PPT版荣誉证书

🤵‍♂️ 个人主页:@艾派森的个人主页

✍🏻作者简介:Python学习者
🐋 希望大家多多支持,我们一起进步!😄
如果文章对你有帮助的话,
欢迎评论 💬点赞👍🏻 收藏 📂加关注+


目录

一、Python处理PPT

二、批量生成PPT版荣誉证书

 三、往期推荐


一、Python处理PPT

        使用Python处理PPT文件通常需要使用第三方库来简化对PPT文件的读取、写入和修改操作。下面介绍一些常用的Python库和它们的功能:

  1. python-pptx:这是一个流行的Python库,用于创建、读取和修改PPTX(Office Open XML格式)文件。您可以使用它创建新的幻灯片、添加文本、图像和形状,还可以修改幻灯片的样式和布局。

  2. python-pptx-template:这个库在python-pptx的基础上增加了对模板的支持。您可以使用预定义的PPTX文件作为模板,然后在模板的基础上进行修改和生成新的演示文稿。

  3. python-com-pptx:这是一个用于操作PPT文件的Windows COM库。它可以与Microsoft PowerPoint应用程序进行交互,允许您通过Python脚本控制和修改PPT文件。

  4. pptx2pdf:这个库用于将PPT文件转换为PDF格式。它依赖于LibreOffice来进行转换,因此需要确保系统中已安装LibreOffice。

这里是一个使用python-pptx库创建简单幻灯片的示例:

from pptx import Presentation# 创建一个新的PPT文件
presentation = Presentation()# 添加一张幻灯片
slide = presentation.slides.add_slide(presentation.slide_layouts[5])# 在幻灯片中添加标题和内容
title = slide.shapes.title
content = slide.placeholders[1]
title.text = "欢迎使用Python处理PPT"
content.text = "这是一个使用python-pptx库创建的演示文稿示例。"# 保存PPT文件
presentation.save("example.pptx")

 请注意,您需要在运行脚本之前先安装相应的库。您可以使用pip来安装这些库:

pip install python-pptx
pip install python-pptx-template
pip install comtypes  # 用于python-com-pptx

使用Python处理PPT文件有许多好处:

  1. 自动化:Python可以帮助您自动完成与PowerPoint有关的重复性任务,比如创建演示文稿、更新内容、添加幻灯片或格式化元素。这可以节省大量时间和精力。

  2. 灵活性:Python提供了许多可以操作PPT文件的库和模块,让您可以进行各种操作,包括读取、写入、修改和提取数据。

  3. 库支持:有特定的Python库,如python-pptx,可以简化处理PowerPoint文件的复杂性,提供简单的API供开发人员使用。

  4. 定制化:使用Python,您可以根据动态数据或用户输入来定制PowerPoint演示文稿。例如,您可以将来自不同来源的数据合并到预先设计好的模板中,创建个性化的报告或演示文稿。

  5. 集成性:Python可以轻松与在数据分析、数据处理和报告流程中常用的其他工具和系统集成。这样,您可以将PPT生成与数据处理和分析结合起来,创建全面且有见地的演示文稿。

  6. 文本处理和数据提取:Python强大的文本处理能力使您可以从现有的PowerPoint演示文稿中提取信息。您可以搜索特定文本,从幻灯片中提取数据,甚至生成结构化数据以进行进一步的分析。

  7. 协作:使用Python处理PPT文件,您可以促进团队成员之间的协作,使他们可以以编程方式生成和更新演示文稿,减少手动错误并确保一致性。

  8. 跨平台:Python是一种跨平台语言,这意味着您的PPT处理脚本可以在不同的操作系统上运行,提供了灵活性和便捷性。

  9. 节省成本:Python是一种开源语言,用于PPT处理的库也是免费提供的。这使得Python成为处理PowerPoint文件的一种经济高效的解决方案。

        总的来说,Python的简单性、丰富的库支持和自动化任务的能力使其成为处理PowerPoint文件的优秀选择,无论您是想自动化演示文稿、从幻灯片中分析数据还是生成动态报告。

二、批量生成PPT版荣誉证书

技术工具:

Python版本:3.9

代码编辑器:jupyter notebook

        每到学期末,幼儿园的小朋友除了让家长带上床上用品等回家,还有一张“好孩子”的“荣誉证书”。这个不像大朋友或者成人的荣誉证书,必须是通过激烈竞争而只有少数人才能获得的。这个可是人手一份的,大家都是“好孩子”。如果有小朋友没有拿到这个荣誉证书,家长和小孩子可不愿意了,非得找老师理论不可,哈哈。朋友所在的幼儿园每学期都要搞这个事情,整个幼儿园近400份荣誉证书,一个一个填写,专人要填几天。这不,这次园长让朋友来填,真愁死人了!于是朋友跑来亲切地询问我是否可以代劳。好吧,朋友相求,必须拍胸脯保证行啊。

        此处,需要用到第三方库`pptx`。这个是专门用来创建和修改PPT幻灯片的库(PPT文件必须是.pptx为后缀的)。我们先安装这个库,步骤如下:

 1. Windows徽标键+字母键R,输入"cmd”运行命令输入窗口

2. 输入"pip install python-pptx",耐心等待下载及安装

 

        有时候网络太差,下载到中途会崩溃,也可以直接去这个库所在的网站(https://pypi.org/project/python-pptx/#files )用迅雷下载到本地盘,再安装。比如我将这个下载好的压缩文件解压到E盘,然后打开运行cmd,输入"E:"进入E盘,再输入"cd python-pptx-0.6.18"进入其所在文件夹,最后输入"python setup.py install"进行安装。 

 如下是安装完成的提示,然后就可以使用了。

首先,需要在幻灯片母版的第一个版式中设置好模板,以便后面用程序调用:

此处,模板中插入了一张荣誉证书的背景图片,然后将文字部分分成了6个文本框(可根据实际情况灵活调整),在其中填入内容,设置好字体和字号。 

         在power point软件中设置好模板之后,需要用程序读取一下模板中的文本框所对应的编号,即占位符(placeholder)的ID。由于PPT中一页幻灯片的占位符编号随着PPT的不断更改,不一定是按1,2,3这样的顺序排列的,只有读取一下才知道。

from pptx import Presentation
prs = Presentation('data\荣誉证书模板.pptx')
slide = prs.slides.add_slide(prs.slide_layouts[0]) # 第一个模板的第0个板式
for ph in slide.placeholders: #遍历这页PPT的所有占位符phf = ph.placeholder_format #获取占位符的格式print(phf.idx) #打印其ID编号ph.text = str(phf.idx)# 将编号写入PPT对应的位置中,以便后面一一对应
# 以上读取到占位符的ID方便后面调用
prs.save('data\荣誉证书模板-占位符编号.pptx')

 

        以上,我们先导入安装好的`pptx`库中的`Presentation`(演示文稿/幻灯片)模块,然后打开对应路径下的PPT模板,并存入`prs`变量。然后通过`prs.slides.add_slide`以母版中的第一个模板新增1张幻灯片。模板的版式编号是从0开始的,所以第一个版式对应的是`[0]`。然后遍历这页PPT的所有占位符,获取其占位符的格式,存入`phf`变量。然后通过`phf.idx`打印其ID编号。如上,我们可以看到结果。随后通过`ph.text`将编号写入PPT对应的位置中,以便后面一一对应。由下图可见,其编号从上到下是10~15。 

        模板做好,占位符ID确定后,就需要读取幼儿园所有小朋友的班级和名字信息,然后写入了。小朋友的信息存在现有的Excel表格中,使用`openpyxl`库读取出来即可。下面就来读取吧。 

from openpyxl import load_workbook
wb = load_workbook("data\名单.xlsx")
ws = wb.active
data={}
for row in range(2,ws.max_row+1):class_id = ws['A' + str(row)].valuename = ws['B' + str(row)].value data.setdefault(class_id,[])data[class_id].append(name)
data['小一'][:10]

        以上,将名单中的班级和姓名信息按“班级”为键,“姓名”组成的列表为值存入字典`data`。通过`data['小一'][:10]`查看一下小一班前10个同学的数据。下面开始批量写入PPT。 

import time
t0=time.time()# 程序开始运行的时间prs = Presentation('data\荣誉证书模板.pptx')
slide_layout = prs.slide_layouts[0] #调用设置好的母版,因为是母版的第一版式,所以取[0]
for class_id in data:for name in data[class_id]:slide = prs.slides.add_slide(slide_layout) #以母版的版式为基础新增一页幻灯片#往幻灯片中写入内容slide.placeholders[10].text = "{} 班 {} 同学:".format(class_id,name) #此处是班级和姓名slide.placeholders[11].text = "在2019-2020学年度第一学期获得"slide.placeholders[12].text = "“好孩子”称号。"slide.placeholders[13].text = "特发此证,以资鼓励。"slide.placeholders[14].text = "市幼儿园"slide.placeholders[15].text = "2020年1月"
prs.save('data\荣誉证书(总).pptx')
t1 = time.time()print('程序用时:',str(round(t1-t0))+'秒。')

        400名小朋友的奖状只用了8秒钟写完。以上,通过`for`循环先获取班级,然后第二个`for`循环获取该班级下面对应的姓名,对于每个姓名,通过`prs.slides.add_slide`新建一页幻灯片,然后按我们先前获取的占位符ID,写入内容。除了班级和姓名,其它都是固定的内容。写入完成后,保存打印即可。而且PPT里是按班级排序的,这样每个班级的荣誉证书在打印后会集中在一起,方便区分。 

 三、往期推荐

Python提取pdf中的表格数据(附实战案例)

使用Python自动发送邮件

Python操作ppt和pdf基础

Python操作word基础

Python操作excel基础

使用Python一键提取PDF中的表格到Excel

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

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

相关文章

RocketMQ消费者可以手动消费但无法主动消费问题,或生成者发送超时

1.大多数是配置问题 修改rocketmq文件夹broker.conf 2.配置与集群IP或本地IPV4一样 重启 在RocketMQ独享实例中支持IPv4和IPv6双栈,主要是通过在网络层面上同时支持IPv4和IPv6协议栈来实现的。RocketMQ的Broker端、Namesrv端和客户端都需要支持IPv4和IPv6协议&…

Python土力学与基础工程计算.PDF-螺旋板载荷试验

python 求解代码如下: 1. import numpy as np 2. 3. # 已知参数 4. p_a 100 # 标准压力, kPa 5. p np.array([25, 50, 100, 200) # 荷载, kPa 6. s np.array([2.88, 5.28, 9.50, 15.00) / 10 # 沉降量, cm 7. D 10 # 螺旋板直…

C语言:选择+编程(每日一练)

目录 选择题: 题一: 题二: 题三: 题四: 题五: 编程题: 题一:尼科彻斯定理 示例1 题二:等差数列 示例2 本人实力有限可能对一些地方解释和理解的不够清晰&…

windows下redis服务启动及.bat文件中中redis服务的启动

windows windows下redis服务的启动 1、不配置环境变量 找到redis服务的安装目录进入命令行窗口并输入命令redis-server.exe redis.windows.conf2、配置环境变量 将redis安装目录配置在path环境变量中之后就可以在cmd窗口的任意位置输入redis-server命令就可以启动redis服务…

材料行业可以转IC设计后端吗?

近来有许多材料行业的小伙伴通过后台来问我对于职业规划的看法,甚至有些小伙伴直接点明了某个行业适不适合自己,那么我这边仅以近年来比较热门的数字芯片设计来展开讲讲,材料适不适合转行做IC呢。 对于理工科的同学而言,选择哪个…

公告:微信小程序备案期限官方要求

备案期限要求 1、若微信小程序未上架,自2023年9月1日起,微信小程序须完成备案后才可上架,备案时间1-20日不等; 2、若微信小程序已上架,请于2024年3月31日前完成备案,逾期未完成备案,平台将按照…

Android Studio实现列表展示图片

效果: MainActivity 类 package com.example.tabulation;import android.content.Intent; import android.os.Bundle; import android.view.View;import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.LinearLayoutManager; im…

JVM——引言+JVM内存结构

引言 什么是JVM 定义: Java VirtualMachine -java 程序的运行环境 (ava 二进制字节码的运行环境) 好处: 一次编写,到处运行自动内存管理,垃圾回收功能数组下标越界检查,多态 比较: jvm jre jdk 学习jvm的作用 面试理解底层实现原理中…

SpringBoot-lombok

为什么要使用lombok? Lombok是一个通过注解以达到减少代码的Java库,如通过注解的方式减少getter,setter方法,构造方法等。通过注解的形式自动生成构造器、getter/setter、equals、hashcode、toString等方法,并可以自动化生成日志变量,简化java开发、提高…

NLP文本匹配任务Text Matching [有监督训练]:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践

NLP文本匹配任务Text Matching [有监督训练]:PointWise(单塔)、DSSM(双塔)、Sentence BERT(双塔)项目实践 0 背景介绍以及相关概念 本项目对3种常用的文本匹配的方法进行实现:Poin…

模型预测笔记(一):数据清洗分析及可视化、模型搭建、模型训练和预测代码一体化和对应结果展示(可作为baseline)

模型预测 一、导入关键包二、如何载入、分析和保存文件三、修改缺失值3.1 众数3.2 平均值3.3 中位数3.4 0填充 四、修改异常值4.1 删除4.2 替换 五、数据绘图分析5.1 饼状图5.1.1 绘制某一特征的数值情况(二分类) 5.2 柱状图5.2.1 单特征与目标特征之间的…

Mysql性能优化:什么是索引下推?

导读 索引下推(index condition pushdown )简称ICP,在Mysql5.6的版本上推出,用于优化查询。 在不使用ICP的情况下,在使用非主键索引(又叫普通索引或者二级索引)进行查询时,存储引擎…

容斥原理 博弈论(多种Nim游戏解法)

目录 容斥原理容斥原理的简介能被整除的数(典型例题)实现思路代码实现扩展:用DPS实现 博弈论博弈论中的相关性质博弈论的相关结论先手必败必胜的证明Nim游戏(典型例题)代码实现 台阶-Nim游戏(典型例题&…

Java多态详解(1)

多态 多态的概念 所谓多态,通俗地讲,就是多种形态,具体点就是去完成某个行为,当不同的对象去完成时会产生出不同的状态。 比如: 这一时间爆火的“现代纪录片”中,麦克阿瑟总是对各种“名人”有不同的评价&…

算法通关村第十关 | 归并排序

1. 归并排序原理 归并排序(MERARE-SORT)简单来说就是将大的序列先视为若干个比较小的数组,分成比较小的结构,然后是利用归并的思想实现的排序方法,该算法采用经典的分治策略(分就是将问题分成一些小的问题分…

【Axure模板】APP帮助中心原型,在线客服意见反馈模块高保真原型

作品概况 页面数量:共 10 页 兼容软件:Axure RP 9/10,不支持低版本 应用领域:原型设计模板 作品申明:页面内容仅用于功能演示,无实际功能 作品特色 该模板作品为APP帮助与客服的通用模块,…

golang操作excel的高性能库——excelize/v2

目录 介绍文档与源码安装快速开始创建 Excel 文档读取 Excel 文档打开数据流流式写入 [相关 Excel 开源类库性能对比](https://xuri.me/excelize/zh-hans/performance.html) 介绍 Excelize是一个纯Go编写的库,提供了一组功能,允许你向XLAM / XLSM / XLS…

【Kubernetes】Kubernetes的Pod控制器

Pod控制器 一、Pod 控制器的概念1. Pod 控制器及其功用2. Pod 控制器有多种类型2.1 ReplicaSet2.2 Deployment2.3 DaemonSet2.4 StatefulSet2.5 Job2.6 Cronjob 3. Pod 与控制器之间的关系 二、Pod 控制器的使用1. Deployment2. SatefulSet2.1 为什么要有headless?2…

数据挖掘 | 零代码采集房源数据,支持自动翻页、数据排重等

1 前言 城市规划、商业选址等应用场景中经常会对地区房价、地域价值进行数据分析,其中地区楼盘房价是分析数据中重要的信息参考点,一些互联网网站上汇聚了大量房源信息,通过收集此类数据,能够对地区房价的分析提供参考依据。 如何…

216、仿真-基于51单片机温度烟雾人体感应布防报警Proteus仿真设计(程序+Proteus仿真+原理图+配套资料等)

毕设帮助、开题指导、技术解答(有偿)见文未 目录 一、硬件设计 二、设计功能 三、Proteus仿真图 四、原理图 五、程序源码 资料包括: 需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。 方案选择 单片机的选…