使用 Python-docx 產生 Word 檔案

寫文件一直是一件很煩人的事,尤其是寫一些 API 文件。由於這類的文件的格式很固定,但又不得不寫,又常常要改來改去,弄起來總是很煩心。所以之前就想要透過自動化的方式,來產生word文件。而最近研究 AI, 感覺自動產生文件可以搭配的上,就先做一個技術儲備了。

Python 產生 Word 文件

Python 要產生一 word 的 docx 文件,可以透過 python-docx 套件來達成,安裝的的方式就以pip進行。

python-docx 可以開啟一個全新的文件,或者開啟現有的文件來做為一個範本。建議就選隨便試試看,最後再套用自己的範本。

Python-docx

Python-docs 支援了加入 head, paragraph, picture 等等的功能,這樣就能構建標題、內文、圖片。表格和圖片的部份,也可以加入標號以在圖表目錄中顯示。

為了簡化 python-docx 的使用,我將其功能分離出來成幾個 add_heading, add_paragraph, add_list_bullet 在另一個檔案,這樣在使用上就可以看起來比較精簡。

下載專案

用下面命令來下載試範專案

產生word檔案

產生的結果

打開 demo2.docx, 可以看到如下的內容

 

程式碼

主體

主體是利用 gen_wordtool.py 所提供的 function 進行文件的建構,原則上沒什麼特別,只是比較精簡一點。

L1~L5: import docx 的功能

L6~9: import 自己撰寫在 gen_wordtool.py 的功能

L11: 以 demo.docx 為範本來進行修改

L13~15: 新增標題與內文,內文有粗體

L17~22: 新增 List 列表

L24~27: 新增數字列表

L31~32: 新增圖片以及其 caption

L42~L55: 新增表格,設定其樣式為 “Light Shading Accent 1”, 並加邊框。在官網的文件裡,有提到可用的 Style 。

L56: 為表格加入標號

L57~59: 加入分頁號及存檔

gen_wordtool.py

gen_wordtool.py 是將 python-docx 的 API 再組和一下成為語法較簡易的用法。

其中有幾個比較複雜的 function.

  • add_caption(): 將圖或表加入標號,使得其可以在圖表目錄中顯示。其中有用到功能變數 STYLEREF, SEQ, ARABIC,這些其實較難瞭解。最快的方法,還是從已經建立的文件去觀察其功能變數為何。在 Word 中按下 ALT+F9 就可以切換
  • set_table_border(): 幫表格加邊框。

原始表格標記

 

切換功能變數後所顯示的標記

結語

Word 雖然算不上是好的格式,但非常通用。好在其也遵循了一定的標準,可以讓我們用python進行一定的修改。為將來的自動化產生,奠定了一定的基礎。

Leave a Reply(Name請以user_開頭,否則會被判定會垃圾息)

請輸入答案 17 + = 18