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


    背景需求:

    艺术组长提出需求:请给word模板文件批量“添加电子公章(png图片)

    解压文件后,发现:

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

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

    解题思路:

    1、原作者已经辛辛苦苦一个一个Word添加了获奖名字。

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

    2、预设是手动反复黏贴png图片。

    按同事的需求,我需要打开无数个WORD,然后将电子公章复制并拖动到指定位置,然后保存。但是手工反复黏贴图片,容易出现某一份遗漏、而且手动贴公章pngt图片的位置会不同

    3、运用python 批量读取EXCEL信息并写入Word模板

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

    操作流程:

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

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

    3、docx模板制作

    素材位置

    代码展示

    1. # -*- coding:utf-8 -*- 1
    2. '''
    3. 目的:教师获奖证书
    4. 作者:阿夏
    5. 日期:2023年9月6日 13:38
    6. '''
    7. # 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹
    8. from docxtpl import DocxTemplate
    9. import pandas as pd
    10. import os
    11. import time
    12. #
    13. zpath=os.getcwd()+'\\'
    14. zpath=r'C:\Users\jg2yXRZ\OneDrive\桌面\第一届七彩天空奖证(批量公章)'+'\\'
    15. file_path=zpath+r'\零时Word'
    16. # 二、遍历excel,逐个生成word(form.docx是前面的模板)
    17. try:
    18. os.mkdir(file_path)
    19. except:
    20. pass
    21. tpl = DocxTemplate(zpath+'第一届七彩天空教师专业赋能大赛奖状(模板).docx')
    22. IDcard = pd.read_excel(zpath+'获奖名单.xlsx')
    23. nu=IDcard["nu"]
    24. name = IDcard["name"]
    25. reward=IDcard["reward"] # str.rstrip()用于去掉换行符
    26. # math = autho['math']
    27. # eng = autho['eng']
    28. # 遍历excel行,逐个生成
    29. num = IDcard.shape[0]
    30. for i in range(num):
    31. context = {
    32. "nu": nu[i],
    33. "name": name[i],
    34. "reward": reward[i],
    35. }
    36. tpl = DocxTemplate(zpath+'第一届七彩天空教师专业赋能大赛奖状(模板).docx')
    37. tpl.render(context)
    38. # tpl.save(file_path+r"\{} 的身份证.docx".format(name[i]))
    39. #
    40. tpl.save(r"C:\Users\jg2yXRZ\OneDrive\桌面\第一届七彩天空奖证(批量公章)\零时Word\{}_{}_第一届七彩天空教师专业赋能大赛奖状_({}).docx".format('%02d'%nu[i],reward[i],name[i]))
    41. # from docx2pdf import convert
    42. # # docx 文件另存为PDF文件
    43. # inputFile = r"C:\Users\jg2yXRZ\OneDrive\桌面\第一届七彩天空奖证'册/零时Word/{}_第一届七彩天空教师专业赋能大赛奖状_({}).docx".format('%02d'%nu[i],name[i]) # 要转换的文件:已存在
    44. # # print('----------第5步:删除临时文件夹------------')
    45. # import shutil
    46. # shutil.rmtree('D:/test/03办公类/11毕业册/零时Word') #递归删除文件夹,即:删除非空文件夹

    代码重点:

    终端运行:

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

    结果展示:

    证书效果展示:

    可以看到:

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

    感悟:

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

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

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

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

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

  • 相关阅读:
    Redis实现分布式锁
    蓝桥杯day3刷题日记--P9420 [蓝桥杯 2023 国 B] 子 2023 / 双子数
    mac使用python递归删除文件夹下所有的.DS_Store文件
    创建一个窗口使用鼠标点击进行画矩形,函数:namedWindow,setMouseCallback
    Could not find org.jetbrains.kotlin:kotlin-stdlib-jre7:1.5.21.
    css常见动画
    数据结构——线性表
    Linux系列之重定向操作
    C++ :函数: 函数指针
    CentOS 7.9.2009 数据盘挂载
  • 原文地址:https://blog.csdn.net/reasonsummer/article/details/132724807