最近寫了好幾篇分享文使用了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 = False | word文件中開啟頁首或頁尾時,首頁不同是否打勾。 |
section.header.is_linked_to_previous = True | word文件中開啟頁首或頁尾時,首頁是否連結到前一節。 |
section.footer.is_linked_to_previous = True | word文件中開啟頁首或頁尾時,首尾是否連結到前一節。 |
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')
以上就是這次的分享!!