日常工作中常常有这样一种场景,需要批量制作一些主要内容相同,只是部分数据有变化的word文档,比如HR的聘用合同,采购部的采购合同。


如上图所示,文档中【】中的信息需要根据不同的聘用人或者采购方去做相应的修改,具体的修改信息放在Excel中



接下来,就用python操作word和excel批量生成聘用合同,需要的文档主要有两个,一个是word模板,一个是用来存储替换信息的excel。


模块介绍

实现该功能主要用到两个模块:python-docx和openpyxl,前者用来操作word后者用来操作Excel

读取word信息并打印出来

批量生成word的完整代码

from docx import Documentfrom openpyxl import load_workbook# 定义关键信息替换函数def info_replace(doc,old_info,new_info): for para in doc.paragraphs: para.text = para.text.replace(old_info,new_info) # 读取word模板doc = Document('/Users/baobao/Desktop/写作/人事聘用合同模板.docx')# 读取excel中的详细信息wb = load_workbook('/Users/baobao/Desktop/写作/聘用人信息.xlsx')ws = wb.active# 利用Excel中的信息替换word模板中的信息,并保持修改后的word文档for row in range(2,ws.max_row+1): doc = Document('/Users/baobao/Desktop/写作/人事聘用合同模板.docx') for col in range(1,ws.max_column+1): old_info = str(ws.cell(row=1,column=col).value) new_info = str(ws.cell(row=row,column=col).value) info_replace(doc,old_info,new_info) doc_name = str(ws.cell(row=row,column=2).value) doc.save(f'/Users/baobao/Desktop/写作/结果集/{doc_name}聘用合同.docx')

结果


打开任一文件可以看到信息已经被替换


当你有成千上万个文档需要生成时,需要修改的地方只有三个文件路径即可,甚至你可以利用我之前的文章中【如何把Python变成撩妹神器】介绍的内容,将此python代码打包成.exe文件,就像运行软件一样实现word文档的批量生成。