日常工作中常常有這樣一種場景,需要批量制作一些主要內容相同,只是部分數據有變化的word文檔,比如HR的聘用合同,采購部的采購合同。
![](http://image.uc.cn/s/wemedia/s/upload/2023/03415e30732647f27654ac65888a72ff.png)
![](http://image.uc.cn/s/wemedia/s/upload/2023/71dbb8966a84d010dad73397bb314f0d.png)
如上圖所示,文檔中【】中的信息需要根據不同的聘用人或者采購方去做相應的修改,具體的修改信息放在Excel中
![](http://image.uc.cn/s/wemedia/s/upload/2023/acc803cb516070a5739d4a4b99b954fb.png)
接下來,就用python操作word和excel批量生成聘用合同,需要的文檔主要有兩個,一個是word模板,一個是用來存儲替換信息的excel。
模塊介紹
實現該功能主要用到兩個模塊:python-docx和openpyxl,前者用來操作word後者用來操作Excel
讀取word信息並打印出來
![](http://image.uc.cn/s/wemedia/s/upload/2023/625653fa74030fd900cd0d96f26dfab2.png)
批量生成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')結果
![](http://image.uc.cn/s/wemedia/s/upload/2023/3613f181a72b99aab567c0e8cce57a07.png)
打開任一文件可以看到信息已經被替換
![](http://image.uc.cn/s/wemedia/s/upload/2023/530094dc3647256be8039e9e48ba3800.png)
當你有成千上萬個文檔需要生成時,需要修改的地方只有三個文件路徑即可,甚至你可以利用我之前的文章中【如何把Python變成撩妹神器】介紹的內容,將此python代碼打包成.exe文件,就像運行軟件一樣實現word文檔的批量生成。