Python中 將數據插入到Word模板並生成一份Word


搬運出處: https://blog.csdn.net/DaShu0612/article/details/82912064

首先,我們需要安裝docx-mailmerge這個包。在命令行輸入語句,開始安裝該包。

pip install docx-mailmerge

如果你的系統中已經安裝了該包,系統會有如下的提示。

在完成了docx-mailmerge的安裝之后,需要在Word中進行域的設置,這些域就是你的數據填充的位置。

以Word 2013為例,在Word模板當中,將鼠標光標移動到你細腰插入數據的地方,之后按下圖所示進行操作:

點擊域之后,選擇 郵件合並,域名選擇MergeField,域名可以理解為你在代碼中的一個變量,將你要插入的數據賦值給這個變量,你的數據便會插入到模板當中。另外,格式按照自己的要求去選擇,默認為無。

 

這里我簡單的編輯了一個證明的模板,在需要插入數據的地方設置完域之后,結果如下圖所示:

在完成前兩步工作之后,最后一步就剩下代碼的編寫工作了。

在本文中,其實這一部分代碼非常簡單,本文我寫一個簡單的Demo,其中我的文件名稱和給域賦的值都是寫死的,在項目中生成的Word名稱和給域賦值都可以是變量,還有,模板的位置,生成文件的位置可以改變,生成文件的名字可以是變量,這樣,每次生成的docx文件名字就會不一樣,比如在我的項目當中,我就將身份證號作為文件名稱,這樣按照模板生成的docx文件不會出現重復。

document_1.write('F:\\{}.docx'.format(emp_full_info.get("identity_card")))
由於Python默認是Unicode編碼,所以字符串賦值前要加u,如果是變量賦值,則可以用decode方法,比如:

Year=year.decode(encoding='UTF-8', errors='strict')
Demo具體的源碼:

from mailmerge import MailMerge

# 打印模板
template = "F:\\WorkingProve11.docx"

# 創建郵件合並文檔並查看所有字段

document_1 = MailMerge(template)
print("Fields included in {}: {}".format(template,document.get_merge_fields()))
document_1.merge(
people_name=u'勒布朗',
identity_card_id='123456789',
begin_work_year='2018',
begin_work_month='7',
department_name=u'洛杉磯湖人',
job_name=u'聯盟第一人'

)

document_1.write('F:\\test666.docx')
最后,在制定的F盤下出現了生成的test666.docx文件,打開之后結果如下圖: 

 

最后要注意的一點是,如果在同一位置下生成的兩份文件名字一樣,代碼是會報錯的。

解決方法有以下幾種:

1.運行程序之前,將原來的文件刪除。

2.在代碼中將文件名稱更改。

3.按照上文我所說的,將文件名稱改為變量。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM