如何使用脚本将Excel行数据复制到Word指定文本框批量制作毕业证书
批量生成毕业证书可落地方案
以下两种方案均可以实现完全无手动重复操作,500份证书生成耗时不超过1分钟。
无代码方案:Word 自带邮件合并(推荐普通用户使用)
无需安装额外工具,用Office自带功能即可实现:
- 整理Excel数据源:确保第一行表头为「姓名」「课程名称」,下方对应每行是一个学员的信息,删除无关空行空列,保存后关闭Excel文件(避免文件被占用导致读取失败)
- 导入数据源:打开你提前编辑好的Word毕业证书模板,点击顶部「邮件」选项卡,选择「选择收件人」→「使用现有列表」,选中刚才的Excel文件,再选择对应数据所在的工作表,确认导入
- 关联模板字段:先点击姓名对应文本框的内部激活输入光标,再点击「邮件」选项卡下的「插入合并域」,选择「姓名」字段;重复同样操作,给课程名称的文本框插入「课程名称」字段
- 批量生成:点击「完成并合并」→「编辑单个文档」,选择「全部」即可生成包含所有证书的新Word文档,也可以选择直接批量打印或批量导出为PDF。
注意:如果插入合并域时无法选中文本框内的位置,确认你点击的是文本框内部的输入区域,而非文本框的边框。
脚本方案:Python 批量生成(适合需要单独导出每份证书、自定义规则的场景)
如果需要每份证书单独保存为独立文件,可以用Python脚本实现:
- 先安装依赖库:
pip install python-docx openpyxl - 先在Word模板的两个文本框里分别填入占位符
{{姓名}}和{{课程名称}},保存模板 - 运行以下脚本即可批量生成所有证书:
from docx import Document from openpyxl import load_workbook # 加载Excel数据源,替换为你自己的文件路径 wb = load_workbook("学员数据.xlsx") ws = wb.active # 遍历每行数据,跳过表头行 for row in ws.iter_rows(min_row=2, values_only=True): stu_name, course_name = row[0], row[1] # 加载证书模板,替换为你自己的模板路径 doc = Document("毕业证书模板.docx") # 替换嵌入式文本框的占位符 for shape in doc.inline_shapes: if shape.has_text_frame: for para in shape.text_frame.paragraphs: para.text = para.text.replace("{{姓名}}", stu_name).replace("{{课程名称}}", course_name) # 替换浮动文本框的占位符(如果你的模板用的是浮动文本框,保留这段代码即可) for shape in doc.shapes: if shape.has_text_frame: for para in shape.text_frame.paragraphs: para.text = para.text.replace("{{姓名}}", stu_name).replace("{{课程名称}}", course_name) # 保存单份证书,命名规则可以自己调整 doc.save(f"毕业证书_{stu_name}_{course_name}.docx")
注意:脚本运行时不要打开模板文件和Excel数据源,避免文件占用报错。
内容的提问来源于stack exchange,提问作者Alex Timokhov
相关产品推荐
相关产品推荐

