前面寫了如何處理word中的表格:利用python批量處理Word文件——表格 ,其實我覺得word正文應該很少用到批處理,不過萬一有朋友需要呢,我們要處理的文件內容千奇百怪,但我覺得難點其實是如何對我們想處理的內容進行讀寫,所以這篇博客的主要內容就是word文件的讀寫。我把word文件中的內容分為三類:一是表格;二是圖片;三是其它內容。表格和圖片的處理我在另外的博客中有詳細說明,這里主要談談word正文的讀寫。
在docx中,Word內容的(除表格、圖片)的基本組成是段落,因此word的所有內容都存儲在paragraphs中,paragraph有兩個屬性:一是text,二是style。text存儲段落的內容,style判斷段落的種類。
1.讀取Word內容
1.1讀取Word中的表格
1.2讀取Word中的圖片
1.3讀取Word正文
from docx import Document
doc=Document("./a.docx")
for p in doc.paragraphs:
print(p.text)
通過遍歷paragraphs就可以獲得word中全部內容,有時候我們並不需要讀取Word中的所有內容,我們可能只想要某些特殊的內容,比如標題,比如列表,那么docx可否實現呢,答案是肯定的。
1.3.1 讀取Word中的標題
- 一級標題
for p in doc.paragraphs:
if p.style.name=='Heading 1':
print(p.text)
- 二級標題
for p in doc.paragraphs:
if p.style.name=='Heading 2':
print(p.text)
- 所有標題
import re
for p in doc.paragraphs:
if re.match("^Heading \d+$",p.style.name):
print(p.text)
1.3.2 讀取正文
for p in doc.paragraphs:
if p.style.name=='Normal':
print(p.text)
1.3.3 其它內容
從前面可以看出,如果知道不同內容的style.name,那么要讀這些內容是極其方便的,這些style.name可以通過以下方式得到:
from docx.enum.style import WD_STYLE_TYPE
for i in s:
if i.type==WD_STYLE_TYPE.PARAGRAPH:
print(i.name)
2.Word寫入數據
2.1 標題
寫入標題有兩種方法
doc.add_heading("heading 1",level=1)
or
doc.add_paragraph("heading 1",style='Heading 1')
2.2 正文
doc.add_paragraph("正文")
2.3 分頁符
doc.add_page_break()
2.5 其它
利用add_paragraph可以插入幾何所有內容,只指定對應的style即可。
至於寫入數據時的格式控制說起來就比較復雜了,我就不詳述了,如果大家有需要,可以看下面文檔:
網上資料很多,大家有更多需求就自己去找吧,或着留言。