import pandas as pdfrom docx import Documentfrom docx.shared import Inches # 图片大小from docx.enum.text import WD_ALIGN_PARAGRAPH # 文本对齐方式from docx.shared import Pt # 字号大小from docx.oxml.ns import qn # 字体from pathlib import Path # 路径import timedef table_text(doc,r,c,text,size=14): para = doc.tables[0].cell(r,c).paragraphs[0] para.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中对齐 run = para.add_run(text) # 添加文字 run.font.size = Pt(size) # 字号大小 run.font.name = "仿宋" # 字体名称 run._element.rPr.rFonts.set(qn("w:eastAsia"),run.font.name)s_t = time.time()xls_path = r"C:\Users\Administrator\Desktop\信息登记\信息汇总表.xlsx"doc_file = r"C:\Users\Administrator\Desktop\信息登记\登记表模板.docx"doc_path = Path(r"C:\Users\Administrator\Desktop\信息登记")png_folder = doc_path.joinpath("照片")df = pd.read_excel(xls_path)for _,row in df.iterrows(): doc = Document(doc_file) table_text(doc,0,1,row["姓名"]) table_text(doc,0,3,row["性别"]) table_text(doc,0,5,str(row["出生日期"])) table_text(doc,1,1,row["政治面貌"]) table_text(doc,1,3,row["民族"]) table_text(doc,1,5,row["学历"]) table_text(doc,2,1, row["籍贯"]) table_text(doc,2,5,str(row["身份证号"])) table_text(doc,3,1, row["工作单位"]) table_text(doc,3,5,str(row["电话"])) cell = doc.tables[0].cell(0,6) para = cell.paragraphs[0] para.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中对齐 run = para.add_run() pic_name = png_folder / f"{row["姓名"]}.jpg" if pic_name.exists(): run.add_picture(str(pic_name),width=Inches(1.2),height=Inches(1.6)) doc.save(doc_path / f"{row["姓名"]}.docx")print(f"已完成!用时{time.time()-s_t:.3f}秒")
def table_text(doc,r,c,text,size=14): para = doc.tables[0].cell(r,c).paragraphs[0] para.alignment = WD_ALIGN_PARAGRAPH.CENTER # 居中对齐 run = para.add_run(text) # 添加文字 run.font.size = Pt(size) # 字号大小 run.font.name = "仿宋"# 字体名称 run._element.rPr.rFonts.set(qn("w:eastAsia"),run.font.name)