a bunch of blue and yellow flowers in a field

Python學習筆記: 操作word docx文件之docx模組功能快覽及程式示範

最近寫了好幾篇分享文使用了docx模組來操作word檔案,
這個模組功能還蠻強的,趁著這次把docx模組說明文件中一些比較常用的功能翻譯成中文。

docx模組英文說明文件網址:
https://python-docx.readthedocs.io/en/latest/index.html

Document constructor (文件建構器)

語法說明
document = Document()開啟新文件
document.save('test.docx')將word存檔為test.docx
document = Document('test.docx')開啟test.docx檔案
document.add_heading('文件標題', 0)新增「文件標題」這些字,樣式為word中的「標題」
document.add_page_break()word中的插入分頁符號
document.add_paragraph()word中新增段落,可結合tab (\t)、newline (\n)、return (\r)
document.add_section()word中的插入分節符號
document.add_picture('photo.jpg', Cm(5))word中的插入photo.jpg圖片,設定圖片寬度5公分,須導入from docx.shared import Cm
document.add_table(3, 2)word文件中插入3列2欄的表格
document.sections()word文件中的所有節,可以用for section in document.sections:遍歷所有的節

Section objects(分節物件)

語法說明
section.different_first_page_header_footer = Falseword文件中開啟頁首或頁尾時,首頁不同是否打勾。
section.header.is_linked_to_previous = Trueword文件中開啟頁首或頁尾時,首頁是否連結到前一節。
section.footer.is_linked_to_previous = Trueword文件中開啟頁首或頁尾時,首尾是否連結到前一節。
section.page_width = Cm(20)word文件中設定頁面寬度為20公分。須導入from docx.shared import Cm
section.page_height = Cm(30)word文件中設定頁面高度為30公分。須導入from docx.shared import Cm
section.left_margin = Cm(3)word文件中設定左邊界為3公分。須導入from docx.shared import Cm
section.right_margin = Cm(3)word文件中設定右邊界為3公分。須導入from docx.shared import Cm
section.top_margin = Cm(3)word文件中設定上邊界為3公分。須導入from docx.shared import Cm
section.bottom_margin = Cm(3)word文件中設定下邊界為3公分。須導入from docx.shared import Cm

Paragraph objects(段落物件)

語法說明
run = paragraph.add_run(mytext)建立run用來處理段落的字體樣式等,mytext是加入段落的字串
run.bold = True設定run物件中的mytext為粗體
run.font.size = Pt(14)設定run物件中的mytext字體大小為14,須導入from docx.shared import Pt模組
run.font.name = 'Times New Roman'設定run物件中的mytext英文及數字的字體為Times New Roman
run._element.rPr.rFonts.set(qn('w:eastAsia'), u'標楷體')設定run物件中的mytext中文字體為標楷體,須導入from docx.oxml.ns import qn模組

以下為示範程式碼,就不特別示範輸出結果了。

要注意的是,document.save()存檔後,如果存在一樣的檔名,會將原檔案給覆蓋。

import os
from docx import Document
from docx.shared import Cm

# 設定工作目錄
os.chdir('d:/temp/test')

# 取得目前工作目錄
cwd = os.getcwd()

# 列印目前工作目錄
print(cwd)

———我是分隔線 ———

# 開啟新文件且儲存
document = Document()

# 文件存檔為test.docx
document.save('test.docx')
# 開啟舊檔test.docx
document = Document('test.docx')

# word文件第一層是Document物件,再下一層是是分節物件
doc_sections = document.sections

# 如果word文件有分1個分節符號,印出來就會有2個section物
for section in doc_sections:
    print(section)
# 開啟舊檔test.docx,並設定頁面與邊界
document = Document('test.docx')

# 假設你的文件中沒有分節符號,那定義出第1頁(sections[0])後就能對頁面做設定
doc_section = document.sections[0]

# 設定分節頁面寬度20公分
doc_section.page_width = Cm(20)

# 設定分節頁面高度50公分
doc_section.page_height= Cm(50)

# 設定分節頁面左邊界3公分
doc_section.left_margin = Cm(3)

# 設定分節頁面右邊界3公分
doc_section.right_margin = Cm(3)

# 設定分節頁面上邊界3公分
doc_section.top_margin = Cm(3)

# 設定分節頁面下邊界3公分
doc_section.bottom_margin = Cm(3)

# 完成設定後存檔
document.save('test.docx')
# 開啟舊檔test.docx,並設定頁面與邊界
document = Document('test.docx')

# 假設你的文件中有分節符號,你要對所有分節的頁面做設定
doc_section = document.sections

# 遍歷所有的分節做設定
for section in doc_section:
    
    # 設定分節頁面寬度20公分
    section.page_width = Cm(20)
    
    # 設定分節頁面高度50公分
    section.page_height= Cm(50)
    
    # 設定分節頁面左邊界3公分
    section.left_margin = Cm(3)
    
    # 設定分節頁面右邊界3公分
    section.right_margin = Cm(3)
    
    # 設定分節頁面上邊界3公分
    section.top_margin = Cm(3)
    
    # 設定分節頁面下邊界3公分
    section.bottom_margin = Cm(3)

# 完成設定後存檔
document.save('test.docx')
# 開啟新文件且儲存
document = Document()

# 文件插入1個分節符號
document.add_section()

# 文件插入1個分頁符號
document.add_page_break()

# 文件存檔為test.docx
document.save('test.docx')
# 開啟新文件且儲存
document = Document()

# 文件中加入「文件標題」的字,樣式是標題
document.add_heading('文件標題', 0) # 0如果改成1,樣式就是標題1

# 文件加入「這是示範段落」的字
document.add_paragraph('這是示範段落')

# 文件加入photo.jpg的圖片,設定寬度5公分
document.add_picture('photo.jpg', width=Cm(5))

# 文件存檔為test.docx
document.save('test.docx')

以上就是這次的分享!!

有關頁首和頁尾的設定,會再寫一篇來分享。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *