【办公类-18-02】(Python)教师获奖证书批量打印(教师信息、获奖类型,公章)

news2024/11/26 16:28:19

背景需求:

同事提出给word批量“添加电子公章(png图片)的需求

解压文件后,发现:

1、每份WORD文件名是一位老师的证书,需要打开每一份word,插入一个空白电子公章png。

2、每个word文件名包含教师的名字。

解题思路:

1、这是同事自己设计的word证书模板,应该是她一个个把名字复制黏贴的(每个word里面已经有名字了)。

2、按同事的需求,我需要打开无数个WORD,然后将电子公章复制并拖动到指定位置,然后保存。(容易遗漏、手动贴公章pngt图片的位置会不同)

3、因为前期做过“大班毕业证书”打印的py程序,所以我觉得最好的方法是“先做一个带公章的word模板+{{name}}”,然后批量生成,而不是一个个插入图片(其实也有程序可以在批量word的指定位置插入图片)

操作流程:

1、用天若OCR,识别教师姓名

2、复制到EXCEL,分栏,只提取名字,原模板中教师两个名字,中间需要空格,手动按空格。

3、docx模板制作

素材位置

代码展示


 # -*- coding:utf-8 -*- 1 
'''
目的:教师获奖证书
作者:阿夏
日期:2023年9月6日 13:38
'''


# 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹
from docxtpl import DocxTemplate
import pandas as pd
import os
import time
# 


zpath=os.getcwd()+'\\'
zpath=r'C:\Users\jg2yXRZ\OneDrive\桌面\第一届七彩天空奖证(批量公章)'+'\\'

file_path=zpath+r'\零时Word'

# 二、遍历excel,逐个生成word(form.docx是前面的模板)
try:
    os.mkdir(file_path)
except:
    pass

tpl = DocxTemplate(zpath+'第一届七彩天空教师专业赋能大赛奖状(模板).docx')
IDcard = pd.read_excel(zpath+'获奖名单.xlsx')

nu=IDcard["nu"] 
name = IDcard["name"]
reward=IDcard["reward"]  # str.rstrip()用于去掉换行符


# math = autho['math']
# eng = autho['eng']

# 遍历excel行,逐个生成
num = IDcard.shape[0]
for i in range(num):
    context = {
        "nu": nu[i],
        "name": name[i],
        "reward": reward[i],  
    
    }
    tpl = DocxTemplate(zpath+'第一届七彩天空教师专业赋能大赛奖状(模板).docx')
    tpl.render(context)
    # tpl.save(file_path+r"\{} 的身份证.docx".format(name[i]))
#
    tpl.save(r"C:\Users\jg2yXRZ\OneDrive\桌面\第一届七彩天空奖证(批量公章)\零时Word\{}_{}_第一届七彩天空教师专业赋能大赛奖状_({}).docx".format('%02d'%nu[i],reward[i],name[i]))
    
    # from docx2pdf import convert

    # # docx 文件另存为PDF文件
    # inputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\第一届七彩天空奖证'册/零时Word/{}_第一届七彩天空教师专业赋能大赛奖状_({}).docx".format('%02d'%nu[i],name[i])  # 要转换的文件:已存在


# # print('----------第5步:删除临时文件夹------------')    
# import shutil
# shutil.rmtree('D:/test/03办公类/11毕业册/零时Word') #递归删除文件夹,即:删除非空文件夹







代码重点:

终端运行:

直接运行,不用输入参数(不显示任何运行过程)

结果展示:

证书效果展示:

可以看到:

教师名字不同,获奖内容不同(优胜、优秀)、公章位置统一

感悟:

用“大班毕业证书”的py代码,略作修改,很快就实现了“教师园级证书”的批量制作

1、它再一次让人从机械重复中摆脱出来(不需要手动一个个黏贴图片)

2、它能实现快速反复修改(名字本来是宋体小四不加粗,我第2次改成了宋体小四加粗),因而能够提升效果、优化质量。(如果手动制作的话,不愿意再改批量做第二次了。)

技术提升效率,需求改变思维。

在忙的要死的阶段里,我是多么迫切希望尽可能减少消耗性重复劳动,获取时间,去做更有价值的事情。

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

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

相关文章

Redis缓存的高并发问题

Redis 做缓存虽减轻了 DBMS 的压力,减小了 RT,但在高并发情况下也是可能会出现各 种问题的。 1 缓存穿透 当用户访问的数据既不在缓存也不在数据库中时,就会导致每个用户查询都会“穿透” 缓存“直抵”数据库。这种情况就称为缓存穿透。一个…

SSL证书系列--又拍云Let’s Encrypt免费DV SSL证书使用教程

原文网址:SSL证书系列--又拍云Let’s Encrypt免费DV SSL证书使用教程_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何使用又拍云部署Let’s Encrypt免费DV SSL证书。 一、了解Let’s Encrypt 了解和关注SSL证书的朋友,似乎没有理由不知道 Let’s Encr…

java八股文面试[数据库]——数据库锁的种类

数据库锁的种类 MySQL数据库由于其自身架构的特点,存在多种数据存储引擎, MySQL中不同的存储引擎支持不同的锁机制。 MyISAM和MEMORY存储引擎采用的表级锁, InnoDB存储引擎既支持行级锁,也支持表级锁,默认情况下采用行级锁。 BDB采用的是页…

开店星小程序上架教程和后台Request failed with status code 500[undefined]问题处理

开店星小程序上架教程和后台Request failed with status code 500[undefined]问题处理 刚刚安装好开店星网站后台之后都会出现这个code 500[undefined]的错误,需要改一下代码。改好了之后就可以正常使用了。如果大家不懂得这样处理的可以私聊我,帮忙处理…

kettle通过java步骤获取汉字首拼

kettle通过java步骤获取汉字首拼 用途描述 一组数据,需要获取汉字首拼后,输出; 实现效果 添加jar包 pinyin4j-2.5.0.jar 自定义常量数据 Java代码 完整代码: import net.sourceforge.pinyin4j.PinyinHelper; import net.sou…

高潮迭起:探寻Twitch上精彩纷呈的电子竞技赛事直播

Twitch是电子竞技赛事的热门直播平台之一,它为全球范围内的电子竞技比赛提供了广泛的覆盖和直播服务。以下是一些在Twitch上直播的电子竞技比赛和赛事的例子: League of Legends (英雄联盟) Twitch广泛直播英雄联盟的各个赛事,包括全球性的锦标赛如英雄联盟全球总决赛(World …

SLAM从入门到精通(基本框架)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 SLAM是机器人的一个分支。广义上来说,机器人还包括了计算机视觉、语音识别、自然语言处理、机械臂控制、运动控制、机器人导航、机器人…

软件架构师 设计和编码

软件架构师 设计和编码 目录概述需求: 设计思路实现思路分析1.设在设计软件架构时,您需要考虑以下方面:2.在编码方面,您需要具有以下技能: 参考资料和推荐阅读 Survive by day and develop by night. talk for import …

如何绘制英语思维导图?偷偷告诉你这个绘制方法

如何绘制英语思维导图?绘制英语思维导图可以帮助我们更好地理清思路,提高学习和工作效率。同时,英语思维导图还可以帮助我们提高英语表达能力和阅读理解能力,让我们更好地掌握英语学习和应用。因此,绘制英语思维导图是…

msvcr120.dll放在哪里?怎么修复msvcr120.dll文件

当您在运行某些应用程序或游戏时遇到“msvcr120.dll缺失”错误时,这可能会影响您的使用体验。msvcr120.dll是Microsoft Visual C Redistributable的一部分,并且它提供了程序运行所需的运行时支持,今天我们来讨论一下msvcr120.dl文件缺失了要怎…

[SSM]MyBatisPlus高级

四、高级篇 4.1主键策略 主键的作用就是唯一标识,我们可以通过这个唯一标识来定位到这条数据。对于表数据中的主键,我们可以自己设计生成规则,生成主键。但是在更多的场景中,没有特殊要求的话,我们每次自己手动生成的…

第 2 章 线性表(线性表的动态分配顺序存储结构实现)

1. 背景说明 线性表(linear Iist)是最常用且最简单的一种数据结构。简言之,一个线性表是 n 个数据元素的有限序列。 至于每个数据元素的具体含义,在不同的情况下各不相同,它可以是一个数或一个符号,也可以是一页书,甚…

千粉福利——— ubuntu安装

(一)配置虚拟机,首先打开虚拟机 点击创建新的虚拟机或者左上角文件->新建虚拟机,或者使用快捷键CtrlN,选择自定义安装 选择虚拟机就硬件兼容性,默认点击下一步就好 安装客户机操作系统:选择稍后安装操作…

tensorflow QAT

tensorflow qat https://www.wpgdadatong.com/tw/blog/detail/70672 在边缘运算的重点技术之中,除了简化复杂的模块构架,来简化参数量以提高运算速度的这项模块轻量化网络构架技术之外。另一项技术就是各家神经网络框架(TensorFlow、Pytorc…

Day7:浅谈useEffect

「目标」: 持续输出!每日分享关于web前端常见知识、面试题、性能优化、新技术等方面的内容。 Day7-今日话题 useEffect 是 React 中一个非常重要的 Hook,用于处理副作用和订阅外部数据源的变化。它可以在函数式组件中执行各种操作,例如数据获…

小程序如何上传微信聊天记录的文件

wx.chooseMessageFile({count: 10,type: image,success (res) {// tempFilePath可以作为img标签的src属性显示图片const tempFilePaths res.tempFiles} })参数说明 回调函数说明

数据库实现学生管理系统

1.QT将数据库分为三个层次: 1> 数据库驱动层:QSqlDriver、QSqlDriverCreator、QSqlDriverCreatorBase、QSqlDriverPlugin 2> sql接口层:QSqlDatabase、QSqlQuery、QSqlRecord、QSqlError 3> 用户接口层:提供一些模型QSql…

开眼“观天”,从墨迹天气服贸会之旅看气象服务新未来

今年夏天,天气焦人。先是高温早早上线,然后台风来势汹汹,北京高温、河北暴雨,杜苏芮、苏拉、海葵轮番“奔袭”,极端气象事件频繁登上热搜,其险象环生的过程,让大众对气候问题的关注度节节走高。…

架构师 软件测试

架构师 软件测试 目录概述需求: 设计思路实现思路分析1.软件测试方法 软件测试工具 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for c…

cudnn-windows-x86_64-8.6.0.163_cuda11-archive 下载

网址不太好访问的话,请从下面我提供的分享下载 Download cuDNN v8.6.0 (October 3rd, 2022), for CUDA 11.x 此资源适配 cuda11.x 将bin和include文件夹里的文件,分别复制到C盘安装CUDA目录的对应文件夹里 安装cuda时自动设置了 CUDA_PATH_V11_8 及path C:\Progra…