python批量制作ppt_实例25_批量生成PPT版荣誉证书
到学期末,幼儿园的小朋友除了让家长带上床上用品等回家,还有一张“好孩子”的“荣誉证书”。这个不像大朋友或者成人的荣誉证书,必须是通过激烈竞争而只有少数人才能获得的。这个可是人手一份的,大家都是“好孩子”。如果有小朋友没有拿到这个荣誉证书,家长和小孩子可不愿意了,非得找老师理论不可,哈哈。
老婆所在的幼儿园每学期都要搞这个事情,整个幼儿园近400份荣誉证书,一个一个填写,专人要填几天。这不,这次园长让老婆来填,真愁死人了!老婆知道我在鼓捣编程什么的,跑来亲切地询问是否可以代劳。好吧,领导相求,必须拍胸脯保证行啊。
此处,需要用到第三方库pptx。这个是专门用来创建和修改PPT幻灯片的库(PPT文件必须是.pptx为后缀的)。我们先安装这个库,步骤如下:Windows徽标键+字母键R,输入"cmd”运行命令输入窗口
2. 输入"pip install python-pptx",耐心等待下载及安装
有时候网络太差,下载到中途会崩溃,也可以直接去这个库所在的网站(python-pptx )用迅雷下载到本地盘,再安装。比如我将这个下载好的压缩文件解压到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')
>>
10
11
12
13
14
15
以上,我们先导入安装好的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)].value
name = ws['B' + str(row)].value
data.setdefault(class_id,[])
data[class_id].append(name)
data['小一'][:10]
>>['张1', '李1', '李13', '王9', '王21', '王33', '王45', '王57', '王69', '王81']
以上,将名单中的班级和姓名信息按“班级”为键,“姓名”组成的列表为值存入字典data。其中setdefault的用法在实例19中有详细解释,请参考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))+'秒。')
>>程序用时: 8秒。
400名小朋友的奖状只用了8秒钟写完。以上,通过for循环先获取班级,然后第二个for循环获取该班级下面对应的姓名,对于每个姓名,通过prs.slides.add_slide新建一页幻灯片,然后按我们先前获取的占位符ID,写入内容。除了班级和姓名,其它都是固定的内容。写入完成后,保存打印即可。而且PPT里是按班级排序的,这样每个班级的荣誉证书在打印后会集中在一起,方便区分。
如果您有需要处理的问题,可发邮件到我邮箱:donyo@qq.com,一起探讨解决方案。
以上在Jupyter notebook上完成,所用到的代码及Excel 资料已上传GitHub及百度网盘, 欢迎下载到本地随意玩。
Python版本:Python 3.6 64bit
操作系统:Windows 7
GitHub:Office_Automation_by_Using_Python
百度Pan:“pan.baidu”加上“.com/s/1WXcoYts_uNJmccfJ0lrmWg” 提取码: kry7
WeiXin:Python操作Office软件高效工作
python批量制作ppt_实例25_批量生成PPT版荣誉证书相关推荐
- 用python和FreePic2Pdf工具手把手教你生成扫描版PDF文档的目录
从网上下载一本书籍来看,结果却是书籍页数几百页还没有目录,要想找到自己想看的部分还的自己徒手去翻,哇.....这时心态就崩了,你识别是也遇到过这种情况.很多下载下来的pdf文档都是扫描版的,一般都没有 ...
- 计算机批量制作邀请函步骤,如何利用Word批量制作邀请函
原标题:如何利用Word批量制作邀请函 如何利用Word批量生成邀请函?邀请函除了邀请对象不一样,邀请的模板都是一样的,大量的对象姓名你还在一个个复制到模板吗?小Q教你一招,一键批量制作邀请函. Wo ...
- 条码标签软件如何批量制作PZN条码
不知大家是否注意过,在一些德国进口的婴幼儿奶粉.健康食品或者药品的包装上会有一个PZN条码.通常由7-8位数组成,PZN全称是Pharma Zentral Nummer,是由德国医药产品信息中心(IF ...
- python制作pdf教程_学以致用:Python爬取廖大Python教程制作pdf!
学以致用:Python爬取廖大Python教程制作pdf! python-tutorial-pdf 当我学了廖大的Python教程后,感觉总得做点什么,正好自己想随时查阅,于是就开始有了制作PDF这个 ...
- python自动制作word_办公自动化5_用Python批量生成word版邀请函
-- coding: utf-8 -- """ Created on Sat Jul 11 23:06:30 2020 @author: Administrator &q ...
- 【办公类-19-02】办公中的思考——Python批量制作word文本框的名字小标签,用A4word打印(植物角、家长会、值日生)
背景需求: 2月28日去小班带班,看到班主任制作了一些小手印花束作为家长会的家长座位提示,上面贴着""圆形白色的幼儿名字贴". 我立刻想起了制作的过程--在word中插入 ...
- python批量制作excel、修改excel,免去皮肉之苦。
先上效果图,如下.每个文件除个人信息不一致.其余内容相同.简易脚本,批量生成. # 开头语:网上教程大多数是基础教学,无实际案例.我完成批量操作后进行记录,可供参考. # 场景:有汇总表,根据汇总表的 ...
- Python批量制作索引图
python 批量制作索引图 python批量制作索引图 最近看的语义分割GSCNN代码的数据集为cityscapes类型,代码中需要的标签图为索引图,而我的标签是3通道RGB图,所以参考了两篇博客. ...
- python yolo-v2 设计批处理程序对训练生成的权重文件进行自动化批量测试,并输出结果到指定txt文件
项目背景 在yolo-v2生成D:\dahuangfeng\darknet-master\build\darknet\x64\backup路径下的权重文件 后,我们先需要先修改D:\dahuangfe ...
- python批量雷达图_python批量制作雷达图
老板要画雷达图,但是数据好多组怎么办?不能一个一个点excel去画吧,那么可以利用python进行批量制作,得到样式如下: 首先制作一个演示的excel,评分为excel随机数生成: 1 =INT(( ...
最新文章
- react 监听组合键_投资组合中需要的5个React项目
- ASP.Net中让网页“立即过时”
- JavaScript 中实现 sleep
- php 笔试 龙腾简合_记录面试龙腾简合-java开发工程师经历
- Oracle_Rac_BackgroudProcess
- 逻辑备库的Swichover和Failover
- 算法竞赛入门经典 第七章 总结
- 1371. 每个元音包含偶数次的最长子字符串
- window自带放大镜解决高分辨率下的字体缩小问题
- 码农如何写好一封邮件/1
- ElasticSearch6.8.1集群搭建及Java客户端编写
- 复制字符串 _strdup _wcsdup _mbsdup
- 通过修改控制文件scn推进数据库scn
- delphi xe10.4.2 datasnap客户端接收dataset返回值
- 用于高性能分组处理的电力线滤波
- tfidf原理及实现
- 打印机显示链接到计算机,电脑连接打印机突然显示错误怎么办
- 关于linux的filp->private_data解释
- C语言调试教程总结(以visual studio和Dev C++为例)
- 从IT之家看企业上云