別再問我Python怎么操作Word了
在之前的自動(dòng)化系列文章中,我們分別講解過python操作Excel利器openpyxl,也講過python操作PDF的幾種方式,今天我們將通過代碼講解Python操作Word文檔docx的常用方法。
安裝
docx是一個(gè)非標(biāo)準(zhǔn)庫,需要在命令行(終端)中使用pip即可安裝
- pip install python-docx
一定要注意,安裝的時(shí)候是python-docx而實(shí)際調(diào)用時(shí)均為docx!
前置知識

Word中一般可以結(jié)構(gòu)化成三個(gè)部分:
- 文檔Document
- 段落Paragraph
- 文字塊Run
也就是Document - Paragraph - Run三級結(jié)構(gòu),這是最普遍的情況。其中文字塊Run最難理解,并不能完成按照圖中所示,兩個(gè)符號之間的短句是文字塊。
通常情況下可以這么理解,但假如這個(gè)短句子中有多種不同的 樣式,則會被劃分成多個(gè)文字塊,以圖中的第一個(gè)黃圈為例,如果給這個(gè)短句添加一些細(xì)節(jié)

此時(shí)就有4個(gè)文字塊,同時(shí)有時(shí)候一個(gè)Word文檔中是存在表格的,這時(shí)就會新的文檔結(jié)構(gòu)產(chǎn)生

這時(shí)的結(jié)構(gòu)非常類似Excel,可以看成Document - Table - Row/Column - Cell四級結(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)典三級結(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. 保存文件
對文檔的修改和創(chuàng)建都切記保存
- wordfile.save(...)
- ... 放需要保存的路徑
3. 添加標(biāo)題
wordfile.add_heading(…, level=…)

4. 添加段落
wordfile.add_paragraph(...)
- wordfile = Document()
- wordfile.add_heading('一級標(biāo)題', level=1)
- wordfile.add_paragraph('新的段落')
5. 添加文字塊
wordfile.add_run(...)

6. 添加分頁
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) # 字號
- run.font.color.rgb = RGBColor(255, 0, 0) # 字體顏色
3. 段落樣式設(shè)置
默認(rèn)對齊方式是左對齊,可以自行修改

小結(jié)
以上就是如何用Python中的docx模塊實(shí)現(xiàn)Word中的常用操作,只要明白什么類型的操作可以用Python執(zhí)行,并能在之后遇到繁瑣的任務(wù)時(shí)想到使用Python即可,以下是幾個(gè)利用該模塊實(shí)現(xiàn)辦公自動(dòng)化的案例,希望能夠?qū)δ阌兴鶐椭?/p>