python編寫一個自動替換word文檔文字程序

編者的話(可以跳過):

????在政府單位實習了一段時間,發(fā)現(xiàn)有很多資料需要制作,而且繁瑣重復,第一時間就想到了python,因為在辦公自動化這方面我只知道python,本著能偷懶就偷懶的原則,通過查閱資料整出一個小腳本然后用tkinter的ui組件寫了一個界面方便除我之外的人使用,此軟件涉及內(nèi)部文件就不發(fā)布了。截圖如下:

某城管局行政處罰文件

1、軟件需求

需求如下:
????當你有一大堆的word文檔,然后這些word文檔都有其固定格式,也許是一個表格,也許就是只有文字的普通文檔,這些固定模式的文檔我稱之為模板。如果有10份模板,這些模板的填寫內(nèi)容大致相同,比如說文件的編號,年份,一些公司名稱等。然后基本上就是機械的找位子復制改改格式循環(huán)往復然后時間就過去了,做了一堆無意義的事情。
????所以核心功能:需要把自己想要填寫的內(nèi)容填寫到模板的指定位置。

2、實現(xiàn)方式

2.1使用python-docx
????有興趣的可以深入學習一下python-docx,這里僅僅是實現(xiàn)需求。python-docx只能處理docx所以doc需要轉(zhuǎn)為docx具體方法可以自行百度。

#coding=utf-8
from docx import Document
from docx.shared import Pt #磅數(shù)
from docx.oxml.ns import qn #chinese

#路徑就是你文檔所在的路徑,word_name文檔文件名稱
document=Document(路徑+'/'+word_name)

#old_text原先模板上的文字,new_text是將要替換的文字,document是需要處理的文檔對象
def change_text(old_text, new_text,document):
    #遍歷文檔內(nèi)所有段落
    all_paragraphs = document.paragraphs

    for paragraph in all_paragraphs:

        for run in paragraph.runs:

            if old_text in run.text:

                run.text = run.text.replace(old_text, new_text)
    #遍歷文檔內(nèi)所有表格
    all_tables = document.tables

    for table in all_tables:

        for row in table.rows:

            for cell in row.cells:

                for paragraph in cell.paragraphs:

                    for run in paragraph.runs:

                        #print '掃描-->'+run.text

                        if old_text in run.text:

                            #print run.text+'->'+new_text #+'-->'+chardet.detect(cell.text.encode())

                            run.text = run.text.replace(old_text, new_text)

????這個替換程序是可以替換word文檔內(nèi)表格和非表格的內(nèi)容且不會修改原模板的任何格式,填寫好上面所給函數(shù)的參數(shù)然后在ide里運行一下,前提是事先在文檔中要填寫的位置寫好要替換的內(nèi)容,也就是old_text,如下所示:

文字替換

\color{red}{小提示:}
????\color{red}{要替換的文字不能包含中文,可以看到圖中都是字母和數(shù)字}
\color{red}{的組合,否則python-docx會對其分隔導致替換失敗。}
????到此文字替換的內(nèi)容搞定。這下你可以根據(jù)自己的想法做一個軟件方便自己和別人使用了。

注:轉(zhuǎn)載請標明出處。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容