Python 操作 Word 樣式處理
上一個小節(jié)我們學習了如何通過 python-docx 模塊寫入 Word 文件,內容已經成功寫入了,但是樣式稍微有點慘不忍睹。平時的工作中我們操作 Word 文件的時候除了要保證內容精良之外,樣式也是不可或缺的,優(yōu)美的文字排版可以極大地增加閱讀體驗,那么本小節(jié)我們就來學習下如何使用 Python 來美化我們的 Word 文檔。
Tips:本小節(jié)代碼是在上一小節(jié)代碼的基礎上繼續(xù)補充樣式處理部分。
1. 插入頁眉頁腳
編寫 Word 文檔時除了正文內容外,還有一部分也很關鍵,就是頁眉和頁腳,通常我們習慣在頁眉處加入公司名稱或 logo,在頁腳添加頁碼或其他聲明信息。在軟件中編輯頁眉和頁腳如下圖所示。
對于文檔通篇頁眉頁腳內容一致的情況下可以使用軟件完成編輯,但如果頁眉和頁腳在不同頁中有不同展示效果,比如奇數頁和偶數頁顯示不同的內容,很明顯手動編輯的方式就不再適用了,這時可以通過 python-docx 模塊編輯頁眉和頁腳。
1.1 插入頁眉
為文檔 info.docx 設置頁眉,代碼如下:
from docx import Document
document = Document("C:/info.docx")
header = document.sections[0].header # 獲取第一個節(jié)的頁眉
header.add_paragraph('這是第一節(jié)的頁眉')
document.save('C:/info.docx')
代碼解釋:代碼中首先讀取上一小節(jié)中完成的 info.docx 文檔,加載完成后,獲取文檔中 sections 部分,索引為 0 即獲取第一部分,根據 header 屬性獲取頁眉,在頁眉插入段落。運行后,info.docx 文檔的頁眉效果如下圖所示。
1.2 插入頁腳
為文檔 info.docx 設置頁腳,代碼如下:
from docx import Document
document = Document("C:/info.docx")
footer = document.sections[0].footer # 獲取第一個節(jié)的頁腳
footer.add_paragraph('這是第一節(jié)的頁腳') # 為第一頁添加頁腳
document.save('C:/info.docx')
代碼解釋:代碼中首先讀取上一小節(jié)中完成的 info.docx 文檔,加載完成后,獲取文檔中 sections 部分,索引為 0 即獲取第一部分,根據 footer 屬性獲取頁腳,在頁腳插入段落。運行后代碼后 info.docx 文檔的頁腳效果如下圖所示。
2. 樣式處理
下圖中的兩個段落,哪種是你更喜歡的呢?
很顯然,段落2看起來更賞心悅目,在 Word 文檔中相同元素的格式一致時,閱讀起來效果更佳。為了實現(xiàn)這種一致性,專業(yè)文檔設計人員開發(fā)了一個樣式表,該樣式表定義了文檔元素類型并指定了每種格式的格式。python-docx 操作 Word 提供了段落樣式(PARAGRAPH)、字符樣式(CHARACTER)、表格樣式(TABLE)和列表樣式(LIST),下面根據介紹段落和表格寫入的內容如何添加樣式。
2.1 添加樣式步驟
步驟1:創(chuàng)建樣式對象
# 定義變量style接收返回新添加的樣式對象
style = document.styles.add_style('textstyle', WD_STYLE_TYPE.PARAGRAPH)
add_style()方法返回一個新添加的樣式對象,第一個參數為自定義的樣子名稱,第二個參數為WD_STYLE_TYPE,這是一個枚舉值,取值范圍包括:paragraph, character, list, table。
步驟2:設置樣式屬性
style = document.styles.add_style('textstyle', WD_STYLE_TYPE.PARAGRAPH)
# 設置字體大小
style.font.size = Pt(16)
# 設置字體顏色
style.font.color.rgb = RGBColor(235, 33, 24)
使用add_style()方法創(chuàng)建新的樣式對象,接下來通過提供的屬性進行樣式設置,代碼中font.size為設置字體大小,font.color為設置字體顏色,取值為RGB顏色值。
步驟3:應用樣式
# 添加新的段落
p1 = document.add_paragraph(
'慕課網是垂直的互聯(lián)網IT技能免費學習網站。以獨家視頻教程、在線編程工具、學習計劃、問答社區(qū)為核心特色。在這里,你可以找到最好的互聯(lián)網技術牛人,也可以通過免費的在線公開視頻課程學習國內領先的互聯(lián)網IT技術',style=style)
add_paragraph()方法為添加一個新的段落,第一個參數為段落的內容,第二個參數為段落要應用的樣式,代碼中將步驟1和步驟2中所創(chuàng)建的樣式對象應用到了該段落上。
2.2 添加段落樣式
了解了添加樣式的步驟之后,接下來看下如何為段落添加樣式。
...省略部分代碼
style = document.styles.add_style('textstyle', WD_STYLE_TYPE.PARAGRAPH)
style.font.size = Pt(16)
style.font.color.rgb = RGBColor(235, 33, 24)
#段落
p1 = document.add_paragraph(
'慕課網是垂直的互聯(lián)網IT技能免費學習網站。以獨家視頻教程、在線編程工具、學習計劃、問答社區(qū)為核心特色。在這里,你可以找到最好的互聯(lián)網技術牛人,也可以通過免費的在線公開視頻課程學習國內領先的互聯(lián)網IT技術',style=style)
代碼解釋:通過 add_style() 方法創(chuàng)建樣式對象后,設置字體大小和字體顏色,其中 Pt(16) 對應字號如下圖所示。
將構建好的樣式對象賦值給 p1 的 style。執(zhí)行完成后,info.docx 文檔效果如下圖所示。
2.3 添加列表樣式
在文檔中,列表也是經常出現(xiàn)的一部分,下面看下如何為段落添加列表樣式。
# 添加一個新的段落,應用列表樣式
document.add_paragraph('Python輕松學', style='List Number'
)
document.add_paragraph('Python經典入門', style='List Number'
)
代碼解釋:使用add_paragraph()方法添加的一個新的段落,第一個參數為段落的文本內容,第二個參數為段落應用的樣式,這里采用的是內置樣式,設置為ListNumber。執(zhí)行完成后 info.docx 文檔效果如下圖所示。
2.3 添加表格樣式
接下來看下如何為表格添加樣式。
...省略部分代碼
table = document.add_table(rows=1, cols=3, style='Medium List 2')
header_cells = table.rows[0].cells
header_cells[0].text = '新上好課'
header_cells[1].text = '講師'
header_cells[2].text = '價格'
table1 = document.add_table(rows=1, cols=3, style='Dark List')
header_cells = table1 .rows[0].cells
header_cells[0].text = '新上好課'
header_cells[1].text = '講師'
header_cells[2].text = '價格'
代碼解釋:在 add_table() 方法中設置 style 所應用的樣式,這里的樣式采用的是內置樣式,更多表格樣式可以訪問這里。執(zhí)行完成后 info.docx 文檔效果如下圖所示。
3. 小結
本節(jié)課程我們主要學習了 python-docx模塊的使用。本節(jié)課程的重點如下:
- 掌握 python-docx模塊中插入頁眉、頁腳的使用方法;
- 掌握 python-docx模塊中為段落、表格添加樣式的方法;
Tips:想要學習更多Pandas相關知識,可以點擊
Python 操作 Excel 數據表:數據讀取
Python 操作 Excle 數據表:數據寫入
Python 操作 Word 寫入