到学期末,幼儿园的小朋友除了让家长带上床上用品等回家,还有一张“好孩子”的“荣誉证书”。这个不像大朋友或者成人的荣誉证书,必须是通过激烈竞争而只有少数人才能获得的。这个可是人手一份的,大家都是“好孩子”。如果有小朋友没有拿到这个荣誉证书,家长和小孩子可不愿意了,非得找老师理论不可,哈哈。

老婆所在的幼儿园每学期都要搞这个事情,整个幼儿园近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版荣誉证书相关推荐

  1. 用python和FreePic2Pdf工具手把手教你生成扫描版PDF文档的目录

    从网上下载一本书籍来看,结果却是书籍页数几百页还没有目录,要想找到自己想看的部分还的自己徒手去翻,哇.....这时心态就崩了,你识别是也遇到过这种情况.很多下载下来的pdf文档都是扫描版的,一般都没有 ...

  2. 计算机批量制作邀请函步骤,如何利用Word批量制作邀请函

    原标题:如何利用Word批量制作邀请函 如何利用Word批量生成邀请函?邀请函除了邀请对象不一样,邀请的模板都是一样的,大量的对象姓名你还在一个个复制到模板吗?小Q教你一招,一键批量制作邀请函. Wo ...

  3. 条码标签软件如何批量制作PZN条码

    不知大家是否注意过,在一些德国进口的婴幼儿奶粉.健康食品或者药品的包装上会有一个PZN条码.通常由7-8位数组成,PZN全称是Pharma Zentral Nummer,是由德国医药产品信息中心(IF ...

  4. python制作pdf教程_学以致用:Python爬取廖大Python教程制作pdf!

    学以致用:Python爬取廖大Python教程制作pdf! python-tutorial-pdf 当我学了廖大的Python教程后,感觉总得做点什么,正好自己想随时查阅,于是就开始有了制作PDF这个 ...

  5. python自动制作word_办公自动化5_用Python批量生成word版邀请函

    -- coding: utf-8 -- """ Created on Sat Jul 11 23:06:30 2020 @author: Administrator &q ...

  6. 【办公类-19-02】办公中的思考——Python批量制作word文本框的名字小标签,用A4word打印(植物角、家长会、值日生)

    背景需求: 2月28日去小班带班,看到班主任制作了一些小手印花束作为家长会的家长座位提示,上面贴着""圆形白色的幼儿名字贴". 我立刻想起了制作的过程--在word中插入 ...

  7. python批量制作excel、修改excel,免去皮肉之苦。

    先上效果图,如下.每个文件除个人信息不一致.其余内容相同.简易脚本,批量生成. # 开头语:网上教程大多数是基础教学,无实际案例.我完成批量操作后进行记录,可供参考. # 场景:有汇总表,根据汇总表的 ...

  8. Python批量制作索引图

    python 批量制作索引图 python批量制作索引图 最近看的语义分割GSCNN代码的数据集为cityscapes类型,代码中需要的标签图为索引图,而我的标签是3通道RGB图,所以参考了两篇博客. ...

  9. python yolo-v2 设计批处理程序对训练生成的权重文件进行自动化批量测试,并输出结果到指定txt文件

    项目背景 在yolo-v2生成D:\dahuangfeng\darknet-master\build\darknet\x64\backup路径下的权重文件 后,我们先需要先修改D:\dahuangfe ...

  10. python批量雷达图_python批量制作雷达图

    老板要画雷达图,但是数据好多组怎么办?不能一个一个点excel去画吧,那么可以利用python进行批量制作,得到样式如下: 首先制作一个演示的excel,评分为excel随机数生成: 1 =INT(( ...

最新文章

  1. react 监听组合键_投资组合中需要的5个React项目
  2. ASP.Net中让网页“立即过时”
  3. JavaScript 中实现 sleep
  4. php 笔试 龙腾简合_记录面试龙腾简合-java开发工程师经历
  5. Oracle_Rac_BackgroudProcess
  6. 逻辑备库的Swichover和Failover
  7. 算法竞赛入门经典 第七章 总结
  8. 1371. 每个元音包含偶数次的最长子字符串
  9. window自带放大镜解决高分辨率下的字体缩小问题
  10. 码农如何写好一封邮件/1
  11. ElasticSearch6.8.1集群搭建及Java客户端编写
  12. 复制字符串 _strdup _wcsdup _mbsdup
  13. 通过修改控制文件scn推进数据库scn
  14. delphi xe10.4.2 datasnap客户端接收dataset返回值
  15. 用于高性能分组处理的电力线滤波
  16. tfidf原理及实现
  17. 打印机显示链接到计算机,电脑连接打印机突然显示错误怎么办
  18. 关于linux的filp->private_data解释
  19. C语言调试教程总结(以visual studio和Dev C++为例)
  20. 从IT之家看企业上云

热门文章

  1. 解决 Visio 2016 打开弹出“windows正在设置 请稍候”的问题
  2. Alibaba代码检查工具插件
  3. Matplotlib下载和安装
  4. 基于统计学的商务与经济数据分析知识
  5. GJB438C-2021规范详解其一
  6. Map集合的遍历方式(3种)
  7. 解决求平均值出现加和导致的溢出问题
  8. python 03day上--网络基础及dos命令
  9. Linux源码安装步骤详解
  10. 软考初级程序员报考指南分享