別再問我Python怎么操作Word了!


前言
在之前的自動(dòng)化系列文章中,我們分別講解過(guò)?Python操作Excel利器openpyxl,也講過(guò)?Python操作PDF的幾種方式,今天我們將通過(guò)代碼講解Python操作Word文檔docx的常用方法。
安裝
docx是一個(gè)非標(biāo)準(zhǔn)庫(kù),需要在命令行(終端)中使用pip即可安裝
pip?install?python-docx
一定要注意,安裝的時(shí)候是python-docx而實(shí)際調(diào)用時(shí)均為docx!
前置知識(shí)
Word中一般可以結(jié)構(gòu)化成三個(gè)部分:
文檔 Document段落 Paragraph文字塊 Run
也就是Document - Paragraph - Run三級(jí)結(jié)構(gòu),這是最普遍的情況。其中文字塊Run最難理解,并不能完成按照?qǐng)D中所示,兩個(gè)符號(hào)之間的短句是文字塊。
通常情況下可以這么理解,但假如這個(gè)短句子中有多種不同的 樣式,則會(huì)被劃分成多個(gè)文字塊,以圖中的第一個(gè)黃圈為例,如果給這個(gè)短句添加一些細(xì)節(jié)?
此時(shí)就有4個(gè)文字塊,同時(shí)有時(shí)候一個(gè)Word文檔中是存在表格的,這時(shí)就會(huì)新的文檔結(jié)構(gòu)產(chǎn)生
這時(shí)的結(jié)構(gòu)非常類似Excel,可以看成Document - Table - Row/Column - Cell四級(jí)結(jié)構(gòu)
Word讀取
1.打開Word
from?docx?import?Document
path?=?...
wordfile?=?Document(path)
2. 獲取段落
一個(gè)word文件由一個(gè)或者多個(gè)paragraph段落組成
paragraphs?=?wordfile.paragraphs?
print(paragraphs)
3. 獲取段落文本內(nèi)容
用.text獲取文本
for?paragraph?in?wordfile.paragraphs:?
????print(paragraph.text)
4. 獲取文字塊文本內(nèi)容
一個(gè)paragraph段落由一個(gè)或者多個(gè)run文字塊組成
for?paragraph?in?wordfile.paragraphs:?
????for?run?in?paragraph.runs:?
????????print(run.text)
5. 遍歷表格
上面的操作完成的經(jīng)典三級(jí)結(jié)構(gòu)的遍歷,遍歷表格非常類似
#?按行遍歷
for?table?in?wordfile.tables:
????for?row?in?table.rows:
????????for?cell?in?row.cells:
????????????print(cell.text)
???????
#?按列遍歷?????
for?table?in?wordfile.tables:
????for?column?in?table.columns:
????????for?cell?in?column.cells:
????????????print(cell.text)
寫入Word
1. 創(chuàng)建Word
只要不指定路徑,就默認(rèn)為創(chuàng)建新Word文件
from?docx?import?Document
wordfile?=?Document()?
2. 保存文件
對(duì)文檔的修改和創(chuàng)建都切記保存
wordfile.save(...)
...?放需要保存的路徑
3. 添加標(biāo)題
wordfile.add_heading(…, level=…)
4. 添加段落
wordfile.add_paragraph(...)
wordfile?=?Document()?
wordfile.add_heading('一級(jí)標(biāo)題',?level=1)?
wordfile.add_paragraph('新的段落')
5. 添加文字塊
wordfile.add_run(...)
6. 添加分頁(yè)
wordfile.add_page_break(...)

7. 添加圖片
wordfile.add_picture(..., width=…, height=…)
設(shè)置樣式
1. 文字字體設(shè)置

2.文字其他樣式設(shè)置
from?docx?import?Document
from?docx.shared?import?RGBColor,?Pt
wordfile?=?Document(file)
for?paragraph?in?wordfile.paragraphs:
????for?run?in?paragraph.runs:
????????
????????run.font.bold?=?True??#?加粗?
????????run.font.italic?=?True?#?斜體?
????????run.font.underline?=?True?#?下劃線?
????????run.font.strike?=?True?#?刪除線?
????????run.font.shadow?=?True?#?陰影?
????????run.font.size?=?Pt(20)?#?字號(hào)?
????????run.font.color.rgb?=?RGBColor(255,?0,?0)?#?字體顏色
3. 段落樣式設(shè)置
默認(rèn)對(duì)齊方式是左對(duì)齊,可以自行修改
小結(jié)
以上就是如何用Python中的docx模塊實(shí)現(xiàn)Word中的常用操作,只要明白什么類型的操作可以用Python執(zhí)行,并能在之后遇到繁瑣的任務(wù)時(shí)想到使用Python即可,以下是幾個(gè)利用該模塊實(shí)現(xiàn)辦公自動(dòng)化的案例,希望能夠?qū)δ阌兴鶐椭?/p>
本文為公眾號(hào)早起Python專欄作者陳熹原創(chuàng),轉(zhuǎn)載請(qǐng)后臺(tái)聯(lián)系,未經(jīng)授權(quán)的任何形式轉(zhuǎn)載均視為侵權(quán)!
-END-
wen
mo
song
shu
今天推薦一本數(shù)據(jù)分析相關(guān)的新書:Python數(shù)據(jù)科學(xué)實(shí)踐(本書由狗熊會(huì)推出的一本利用Python介紹數(shù)據(jù)科學(xué)基本過(guò)程的著作,通過(guò)經(jīng)典的商業(yè)應(yīng)用案例對(duì)數(shù)據(jù)爬取、數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)清洗、數(shù)據(jù)建模的核心Python模塊做相應(yīng)的介紹)點(diǎn)擊下方圖片可以直達(dá)購(gòu)買頁(yè)面查看詳情與購(gòu)買,現(xiàn)在京東和當(dāng)當(dāng)都有優(yōu)惠!?
早起在這里也給大家贈(zèng)送三本,規(guī)則如下:
留言你是如何學(xué)習(xí)Python數(shù)據(jù)分析,點(diǎn)贊前三名各贈(zèng)送一本。
僅限最近一個(gè)月未在早起Python獲得贈(zèng)書的粉絲參與。
時(shí)間截止9.23日上午九點(diǎn)。


