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