Python 自動化辦公|Word文檔

【Python 自動化辦公】專欄是介紹如何利用python辦公,減少工作負荷。篇幅精煉,內(nèi)容易懂,無論是否有編程基礎(chǔ),都非常適合。

在上次文章中,我們學(xué)習(xí)了【用python寫入excel】,這次我們學(xué)習(xí)Python寫word文檔吧!

場景:
有時候,辦公室需要按模版生成的固定的文件,模板是固定的,只是每次需要替換信息。如下圖的收入證明,模版中所有標黃的都是需要替換的信息:

image

如果手工來做這個事情,每次至少需要10分鐘的時間。假如每天要開15份,則至少要花2個半小時,而且手工編輯word很容易出錯。

可不可用python寫個程序,解決這個問題呢?

結(jié)論當然是肯定的!

0.摘要

本文大約需要15分鐘,建議在電腦上打開,邊閱讀邊操作。

  1. 安裝Python讀寫word模塊,python-docx
  2. 準備word模板,準備寫入word文檔內(nèi)容
  3. 編寫python代碼并運行
    4.通過讀取excel表格中的信息,批量生成word文件

1.安裝python-docx模塊

與上篇文章類似,需要在cmd窗口輸入pip install python-docx

image

2.準備word模板,準備寫入word文檔內(nèi)容

word模板如上所示,(可以不需要標黃),這里注意,需要替換的文字或數(shù)字位置,用"XXXX"來固定替代。保存為個人收入證明.docx

名稱內(nèi)容姓名張三身份證號104111199009103531職務(wù)工程師工作年限10月收入10000大寫壹萬元整聯(lián)系人李四單位名稱格物致知股份有限公司單位地址珠海市橫琴新區(qū)寶華路6號105室-67425聯(lián)系電話0756-8627528

3. 編寫python代碼并運行

在word模板的同級目錄,新建一個writeword.py文件,用記事本或其他文本編輯工具打開。

編程思路:

  1. 用python打開對應(yīng)doc模板
  2. 按順序找到每一個需要替換的位置字符"XXXX",替換為對應(yīng)的內(nèi)容
  3. 另存為doc為另一個文件

在文本編輯工具中輸入如下代碼,保存并關(guān)閉。

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

生成結(jié)果如下:
張三_個人收入證明.docx

image

4.通過讀取excel表格中的信息,批量生成word文件

這里生成了對應(yīng)word文件,但也有幾個問題:

  1. 對應(yīng)的日期并沒有自動填寫,應(yīng)當填寫文件生成時對應(yīng)的日期
  2. 如果是生成大量同樣word文檔的話,目前的程序也需要一個一個改,并沒有提升太多效率

如果您看過我們之前的2篇用python讀寫excel的文章,您肯定就會想到,可以利用讀取excel表格里的內(nèi)容,批量生成對應(yīng)的word文檔。對,讓我們繼續(xù)吧!

這里再準備一個excel文件,將需要批量寫入的信息寫在excel中,并保存為income.xlsx在同級目錄,如下圖:

image

修改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}%dqeskhnt').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])

運行后,輸入結(jié)果:

image
image
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • 我們在實例5中演示了如何用Python批量生成word版邀請函。我們是簡單粗暴地找到需要填寫受邀者信息所在位置(即...
    PythonOffice閱讀 3,365評論 9 10
  • 知乎上有人提問:用python進行辦公自動化都需要學(xué)習(xí)什么知識呢? 這可能是很多非IT職場人士面臨的困惑,想把py...
    朱衛(wèi)軍AI_Python閱讀 12,778評論 3 157
  • 作家曹勤學(xué) 有人說,你在朋友圈里不斷提到的作家曹勤學(xué),文章寫的那么好,令人仰慕。 曹勤...
    邯鄲趙金海閱讀 1,779評論 0 2
  • Vue 生命周期簡介 生命周期的鉤子 LifeCycle hooks 每個 Vue 實例在被創(chuàng)建的時候都要經(jīng)過一系...
    可笑的黑耀斑閱讀 502評論 0 0
  • 清晨六點十分,鬧鐘照常響起,醒了,內(nèi)心掙扎一下,還是起床穿衣出門。好冷啊,真想找個地洞鉆進去冬眠一季,開春再出來。...
    荒原鷹閱讀 227評論 0 2