豆包两大工程级指令:保真压缩与多立场萃取实战指南
2026/6/17 17:29:51
办公类-18-06】20250523(Python)“口腔检查涂氟信息”批量生成打印(学号、姓名、学校、班级、身份证、户籍、性别、民族)https://mp.csdn.net/mp_blog/creation/editor/148175578
# -*- 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) #递归删除文件夹,即:删除非空文件夹# -*- 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) #递归删除文件夹,即:删除非空文件夹