news 2026/1/21 5:55:24

【办公类-18-07】20251215(Python)“口腔检查涂氟信息”批量生成打印(区名、学号、姓名、学校、班级、身份证、户籍、性别、民族)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【办公类-18-07】20251215(Python)“口腔检查涂氟信息”批量生成打印(区名、学号、姓名、学校、班级、身份证、户籍、性别、民族)

背景需求

本学期的涂氟单来了,需要手写幼儿信息

上学期做了中2班的涂氟单

办公类-18-06】20250523(Python)“口腔检查涂氟信息”批量生成打印(学号、姓名、学校、班级、身份证、户籍、性别、民族)https://mp.csdn.net/mp_blog/creation/editor/148175578

代码拿来复制一份

去年打印后,模版的位置有不同,所以今年需要再重新调整一下文本框的位置

一、扫描图片

二、新的模版贴入WORD内

制作有背景模版,并调整文本框位置(上移几下)

去掉背景,变成无背景模版

班级幼儿信息

读取EXCLE,填写WORD文字占位符,制作PDF

# -*- coding:utf-8 -*- ''' 目的:口腔检查涂氟单(一个班级单独打印) 作者:deepseek,阿夏 日期:20251215 ''' # 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹 from docxtpl import DocxTemplate import pandas as pd import os import time # numnum = int(input('请输入班级号(如4):\n')) l = 2 # int(input('1、有背景图、2、无背景图\n')) zpath = r'C:\Users\jg2yXRZ\OneDrive\桌面\20251215口腔涂氟' + "\\" file_path = zpath + r'\零时Word' # 二、遍历excel,逐个生成word(form.docx是前面的模板) try: os.mkdir(file_path) except: pass # 读取Excel文件 IDcard = pd.read_excel(zpath + '名字虚拟.xlsx') # 获取总人数(不包括标题行) total_people = IDcard.shape[0] print(f"Excel中共有 {total_people} 人") num = IDcard["num"] name = IDcard["name"] school = IDcard["school"] classroom = IDcard["classroom"] # 去掉换行符 y = IDcard["y"] m = IDcard["m"] d = IDcard["d"] ID = IDcard["ID"] SH = IDcard["SH"] FSH = IDcard["FSH"] M = IDcard["M"] F = IDcard["F"] dis=IDcard["dis"] # 尝试这样读取 nation = IDcard["nation"] # 遍历excel行,逐个生成 for i in range(total_people): # python print(IDcard["nation"].head()) # 查看前几行nation数据 print(IDcard["nation"][i]) # 在循环内打印当前处理的nation值 context = { "num": str(num[i]), "dis":dis[i], "name": name[i], "school": school[i], "classroom": classroom[i], "y": y[i], "m": m[i], "d": d[i], "ID": ID[i], "SH": SH[i], "FSH": FSH[i], "M": M[i], "F": F[i], "nation": nation[i], } if l == 1: tpl = DocxTemplate(zpath + '打印单字(有背景).docx') elif l == 2: tpl = DocxTemplate(zpath + '打印单字(无背景).docx') tpl.render(context) tpl.save(file_path + fr'\{num[i]:02}.docx') from docx2pdf import convert # docx 文件另存为PDF文件 inputFile = file_path + fr'\{num[i]:02}.docx' outputFile = file_path + fr'\{num[i]:02}.pdf' # 先创建不存在的文件 f1 = open(outputFile, 'w') f1.close() # 再转换往PDF中写入内容 convert(inputFile, outputFile) time.sleep(2) print('----------第4步:把都有PDF合并为一个打印用PDF------------') # 多个PDF合并 import os from PyPDF2 import PdfFileMerger target_path = file_path pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')] pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst] pdf_lst.sort() file_merger = PdfFileMerger() for pdf in pdf_lst: print(pdf) file_merger.append(pdf) if l == 1: file_merger.write(zpath + fr'\(测试){classroom[0]}班涂氟单({total_people}人)(虚拟有背景图).pdf') elif l == 2: file_merger.write(zpath + fr'\测试{classroom[0]}班涂氟单({total_people}人)(虚拟无背景图).pdf') file_merger.close() print('----------第5步:删除临时文件夹------------') import shutil shutil.rmtree(file_path) #递归删除文件夹,即:删除非空文件夹

虽然看上去占位符和图片背景是对应了,但是实际打印不一样,所以为了调整位置,我反复打印了无数次。

一分园电脑,需要正面(打印面)向下,题目向上

打印1张,做测试。文字全部靠下了,需要向上调整

反复调整位置,打印了多次。

分园的电脑自定义尺寸只能设置一个,要么是15*15,要么是14*21CM,我用适合打印边距、实际大小、自定义105%都打印了一次

结果,文字都没有在横线上,都在横线下面。所以还是去总园用扫描仪扫描图片。做正确的模版

总园大班电脑,

我已经忘记了纸张正面摆放,搜索CSDN看看原来的记录

总园大班打印机的纸张摆放形式:正面(打印面)向上,标题向左。

不断测试:

1、一定要选择自定义的纸张尺寸(原来设置过的,有记录)

存在问题:男孩的单子上面,女部分写了nan

因为这里的空里面是完全空,没有一个空格,就会显示nan

如果添加了公式,内部就不是空,就不会打印任何内容

重新做了一份,没有nan

我做了一套有背景的范例

# -*- coding:utf-8 -*- ''' 目的:口腔检查涂氟单(一个班级单独打印) 作者:deepseek,阿夏 日期:20251215 ''' # 一、导入相关模块,设定excel所在文件夹和生成word保存的文件夹 from docxtpl import DocxTemplate import pandas as pd import os import time # numnum = int(input('请输入班级号(如4):\n')) l = 1 # int(input('1、有背景图、2、无背景图\n')) zpath = r'C:\Users\jg2yXRZ\OneDrive\桌面\20251215口腔涂氟' + "\\" file_path = zpath + r'\零时Word' # 二、遍历excel,逐个生成word(form.docx是前面的模板) try: os.mkdir(file_path) except: pass # 读取Excel文件 IDcard = pd.read_excel(zpath + '名字虚拟.xlsx') # 获取总人数(不包括标题行) total_people = IDcard.shape[0] print(f"Excel中共有 {total_people} 人") num = IDcard["num"] name = IDcard["name"] school = IDcard["school"] classroom = IDcard["classroom"] # 去掉换行符 y = IDcard["y"] m = IDcard["m"] d = IDcard["d"] ID = IDcard["ID"] SH = IDcard["SH"] FSH = IDcard["FSH"] M = IDcard["M"] F = IDcard["F"] dis=IDcard["dis"] # 尝试这样读取 nation = IDcard["nation"] # 遍历excel行,逐个生成 for i in range(total_people): # python print(IDcard["nation"].head()) # 查看前几行nation数据 print(IDcard["nation"][i]) # 在循环内打印当前处理的nation值 context = { "num": str(num[i]), "dis":dis[i], "name": name[i], "school": school[i], "classroom": classroom[i], "y": y[i], "m": m[i], "d": d[i], "ID": ID[i], "SH": SH[i], "FSH": FSH[i], "M": M[i], "F": F[i], "nation": nation[i], } if l == 1: tpl = DocxTemplate(zpath + '打印单字(有背景).docx') elif l == 2: tpl = DocxTemplate(zpath + '打印单字(无背景).docx') tpl.render(context) tpl.save(file_path + fr'\{num[i]:02}.docx') from docx2pdf import convert # docx 文件另存为PDF文件 inputFile = file_path + fr'\{num[i]:02}.docx' outputFile = file_path + fr'\{num[i]:02}.pdf' # 先创建不存在的文件 f1 = open(outputFile, 'w') f1.close() # 再转换往PDF中写入内容 convert(inputFile, outputFile) time.sleep(2) print('----------第4步:把都有PDF合并为一个打印用PDF------------') # 多个PDF合并 import os from PyPDF2 import PdfFileMerger target_path = file_path pdf_lst = [f for f in os.listdir(target_path) if f.endswith('.pdf')] pdf_lst = [os.path.join(target_path, filename) for filename in pdf_lst] pdf_lst.sort() file_merger = PdfFileMerger() for pdf in pdf_lst: print(pdf) file_merger.append(pdf) if l == 1: file_merger.write(zpath + fr'\(测试){classroom[0]}班涂氟单({total_people}人)(虚拟有背景图).pdf') elif l == 2: file_merger.write(zpath + fr'\测试{classroom[0]}班涂氟单({total_people}人)(虚拟无背景图).pdf') file_merger.close() print('----------第5步:删除临时文件夹------------') import shutil shutil.rmtree(file_path) #递归删除文件夹,即:删除非空文件夹

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/1/15 3:37:36

企业级微服务权限系统终极指南:RuoYi-Cloud-Plus深度解析

作为一款功能完备的企业级微服务权限系统,RuoYi-Cloud-Plus提供了完整的权限管理解决方案,通过模块化设计和容器化部署支持快速部署,帮助企业降低开发成本并提升系统安全防护能力。 【免费下载链接】RuoYi-Cloud-Plus 重写RuoYi-Cloud所有功能…

作者头像 李华
网站建设 2026/1/15 3:49:16

无需百度搜索烦恼:Qwen3-32B一站式资源汇总

Qwen3-32B:如何用一个模型解决企业级AI落地的“老大难”问题? 在今天的企业AI实践中,我们常常面临这样的窘境:想要部署一个足够聪明的模型来处理复杂任务,却发现大模型动辄需要四张A100起步,推理延迟高、运…

作者头像 李华
网站建设 2026/1/14 11:57:29

在Apple Silicon Mac上运行iOS应用的技术探索

在Apple Silicon Mac上运行iOS应用的技术探索 【免费下载链接】PlayCover Community fork of PlayCover 项目地址: https://gitcode.com/gh_mirrors/pl/PlayCover 当苹果宣布从Intel转向自家芯片时,一个有趣的技术可能性浮出水面:既然M系列芯片与…

作者头像 李华
网站建设 2026/1/14 3:57:13

阴阳师自动化脚本完整使用指南

阴阳师自动化脚本完整使用指南 【免费下载链接】OnmyojiAutoScript Onmyoji Auto Script | 阴阳师脚本 项目地址: https://gitcode.com/gh_mirrors/on/OnmyojiAutoScript 阴阳师自动化脚本(Onmyoji Auto Script,简称OAS)是一款功能强大…

作者头像 李华
网站建设 2026/1/16 21:50:42

3倍转化率实证研究:零售业顾客关系重构

一、你的顾客,正在成为你的竞争对手今天顾客在你店里消费,明天可能就在隔壁办了卡。促销海报一撤,人气立刻下滑。手里握着上万会员数据,真正有黏性的不足10%。这不是经营问题,这是整个零售业面临的共同困境&#xff1a…

作者头像 李华
网站建设 2026/1/19 3:31:18

Zepp Life智能刷步终极指南:自动化健康数据管理方案

Zepp Life智能刷步终极指南:自动化健康数据管理方案 【免费下载链接】mimotion 小米运动刷步数(微信支付宝)支持邮箱登录 项目地址: https://gitcode.com/gh_mirrors/mimo/mimotion 想要在微信运动排行榜上始终保持领先吗?…

作者头像 李华