news 2026/6/21 14:40:33

【办公类-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/6/22 8:14:30

毕业论文快速降AIGC指南,1小时AI率低于20%!

论文AIGC率过高是当前很多学生和研究者在论文写作中遇到的普遍问题。别慌,只要掌握正确的方法,完全可以将AI生成痕迹有效降低,顺利通过AIGC检测。 一、AIGC检测原理是什么? 为什么自己写的论文AIGC检测会超标,一个一…

作者头像 李华
网站建设 2026/6/20 20:24:07

Beyond Compare 5授权解决方案:企业级文件对比工具的专业部署指南

Beyond Compare 5授权解决方案:企业级文件对比工具的专业部署指南 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 在软件开发、数据分析和系统运维领域,高效的文件对比工…

作者头像 李华
网站建设 2026/6/20 10:31:09

基于FLUX.1-dev的AI艺术创作平台搭建全记录

基于FLUX.1-dev的AI艺术创作平台搭建全记录 在数字艺术创作的前沿,我们正经历一场由生成式AI驱动的范式变革。过去几年里,从Stable Diffusion到DALLE系列,文生图模型不断刷新人们对“机器创造力”的认知边界。然而,真正能将创意意…

作者头像 李华
网站建设 2026/6/21 21:09:30

NCM格式转换终极指南:3步解锁网易云音乐加密文件

还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump工具正是你需要的解决方案!这款轻量级工具能够快速将NCM加密文件转换为通用音频格式,让你的音乐库真正实现跨平台自由流通🎵 【免费下载链接】ncmdump …

作者头像 李华
网站建设 2026/6/22 10:06:11

力扣300

/* dp[n]:以第n个元素结尾的最大子序列的值 所以说dp[n]应该与前面的所有dp[n-1]--dp[0]都与有关,从里面选出一个最大的dp,然后 加上n的本身(如果nums[n]大的话) */ class Solution { public:int lengthOfLIS(vector&l…

作者头像 李华
网站建设 2026/6/22 11:29:28

3.6B活跃参数的秘密:解密GPT-OSS-20B的高效推理机制

3.6B活跃参数的秘密:解密GPT-OSS-20B的高效推理机制 在一台仅配备16GB内存的普通笔记本上,运行一个总参数达210亿的语言模型——这听起来像是天方夜谭。然而,GPT-OSS-20B 正是这样一款打破常规的开源模型,它不仅做到了&#xff0c…

作者头像 李华