【Python 自動化辦公】專欄是介紹如何利用python辦公,減少工作負荷沮稚。篇幅精煉,內(nèi)容易懂册舞,無論是否有編程基礎蕴掏,都非常適合。
在上次文章中,我們學習了【用python寫入excel】盛杰,這次我們學習Python寫word文檔吧挽荡!
場景:
有時候,辦公室需要按模版生成的固定的文件即供,模板是固定的定拟,只是每次需要替換信息。如下圖的收入證明逗嫡,模版中所有標黃的都是需要替換的信息:
如果手工來做這個事情青自,每次至少需要10分鐘的時間。假如每天要開15份祸穷,則至少要花2個半小時性穿,而且手工編輯word很容易出錯勺三。
可不可用python寫個程序雷滚,解決這個問題呢?
結論當然是肯定的吗坚!
0.摘要
本文大約需要15分鐘祈远,建議在電腦上打開,邊閱讀邊操作商源。
- 安裝Python讀寫word模塊车份,python-docx
- 準備word模板,準備寫入word文檔內(nèi)容
- 編寫python代碼并運行
4.通過讀取excel表格中的信息牡彻,批量生成word文件
1.安裝python-docx模塊
與上篇文章類似扫沼,需要在cmd窗口輸入pip install python-docx
。
2.準備word模板庄吼,準備寫入word文檔內(nèi)容
word模板如上所示缎除,(可以不需要標黃),這里注意总寻,需要替換的文字或數(shù)字位置器罐,用"XXXX"來固定替代。保存為個人收入證明.docx
渐行。
名稱內(nèi)容姓名張三身份證號104111199009103531職務工程師工作年限10月收入10000大寫壹萬元整聯(lián)系人李四單位名稱格物致知股份有限公司單位地址珠海市橫琴新區(qū)寶華路6號105室-67425聯(lián)系電話0756-8627528
3. 編寫python代碼并運行
在word模板的同級目錄轰坊,新建一個writeword.py文件,用記事本或其他文本編輯工具打開祟印。
編程思路:
- 用python打開對應doc模板
- 按順序找到每一個需要替換的位置字符"XXXX"肴沫,替換為對應的內(nèi)容
- 另存為doc為另一個文件
在文本編輯工具中輸入如下代碼,保存并關閉蕴忆。
from docx import Document
#準備寫入內(nèi)容
name="張三"
id_code="104111199009103531"
career="工程師"
working_years="10"
salary="10000"
salary_uppercase="壹萬元整"
contact="李四"
company="格物厚德股份有限公司"
address="珠海市橫琴新區(qū)寶華路6號105室-67425"
tel="0756-8627528"
#打開doc
textlist=[name,id_code,career,working_years,salary,salary_uppercase,company,address,contact,tel]
doc = Document("個人收入證明.docx")
count=0
for p in doc.paragraphs:
if 'XXXX' in p.text:
inline = p.runs
for i in range(len(inline)):
if 'XXXX' in inline[i].text:
text = inline[i].text.replace('XXXX', textlist[count])
inline[i].text = text
count+=1
print(count)
doc.save("%s_個人收入證明.docx"%name)
在同級目錄颤芬,打開cmd,運行writeword.py python writeword.py
生成結果如下:
張三_個人收入證明.docx
4.通過讀取excel表格中的信息,批量生成word文件
這里生成了對應word文件驻襟,但也有幾個問題:
- 對應的日期并沒有自動填寫夺艰,應當填寫文件生成時對應的日期
- 如果是生成大量同樣word文檔的話,目前的程序也需要一個一個改沉衣,并沒有提升太多效率
如果您看過我們之前的2篇用python讀寫excel的文章郁副,您肯定就會想到,可以利用讀取excel表格里的內(nèi)容豌习,批量生成對應的word文檔存谎。對,讓我們繼續(xù)吧肥隆!
這里再準備一個excel文件既荚,將需要批量寫入的信息寫在excel中,并保存為income.xlsx在同級目錄栋艳,如下圖:
修改python 文件writeword.py
from docx import Document
#準備寫入內(nèi)容
import xlrd
import time
# 當前時間元組
from datetime import datetime
nt=datetime.now()
# 可以輸入中文年月日
datestr=nt.strftime('%Y{y}%m{m}%dems8aws').format(y='年', m='月', d='日')
xlsx=xlrd.open_workbook('income.xlsx')
sheet=xlsx.sheet_by_index(0)
for row in range(1,sheet.nrows):
doc = Document("個人收入證明.docx")
count=0
textlist=[]
for col in range(0,sheet.ncols):
textlist.append(str(sheet.cell_value(row, col)))
for p in doc.paragraphs:
if 'XXXX' in p.text:
inline = p.runs
for i in range(len(inline)):
if 'XXXX' in inline[i].text:
text = inline[i].text.replace('XXXX', textlist[count])
inline[i].text = text
count+=1
if 'X 年 X 月 X 日' in p.text:
inline = p.runs
for i in range(len(inline)):
if 'X 年 X 月 X 日' in inline[i].text:
text = inline[i].text.replace('X 年 X 月 X 日', datestr)
inline[i].text = text
doc.save("%s_個人收入證明.docx"%textlist[0])
運行后恰聘,輸入結果: