提出问题
一个仪器设备采购公司,商品合同采购需要按模版生成的固定的文件,模板是固定的,只是每次需要替换信息,然后打印出来寄给客户。
传统方法
如果手工来做这个事情,准备好数据之后,需要从Excel表格中复制粘贴数据,再到word中去替换,每次至少需要3分钟的时间。假如每天要开100份,则至少要花5个小时。这样就太浪费人力时间了,而且手工编辑word很容易出错。
爽解决
可不可用python写个程序,快速、秒级解决这个问题呢?
结论当然是肯定的!
提前准备好word模板,准备写入word文档的内容,我们使用Python直接读写word模块,通过读取Excel表格中的信息,批量替换内容并生成word文件。秒级完成重复工作,提升办公效率!
代码实现
## 导入包
from docx import Document
import pandas as pd ## 读入合同信息表
df = pd.read_excel('./合同信息表.xlsx') ## 将读取到的每一个值都放到文本中去替换对应的值
# 一行行取出数据
for i in range(len(df)):## 读取合同模板 Word 文件doc = Document('./修改模板.docx')# 所有段落all_paragraphs = doc.paragraphs# 所有表格all_tables = doc.tables# 一列列取出数据for j in df.columns:# 将每一个元素都在段落里进行对应替换# 遍历每个段落for paragraph in all_paragraphs:# 遍历段落的最小单元runfor run in paragraph.runs:# 替换run_text = run.text.replace(j, str(df.loc[i,j]))# 新的内容赋值回原段落run.text = run_text# 将每一个元素都在表格里进行对应替换# 遍历表格for table in all_tables:# 遍历行for row in table.rows:# 遍历单元格for cell in row.cells:# 替换cell_text = cell.text.replace(j, str(df.loc[i,j]))# 新的内容赋值回原表格cell.text = cell_text## 替换完成后的doc生成新的word文件doc.save(f"./修改后的合同/{df.loc[i,'xBuyerx']}合同.docx")
实现效果: