Python:docx模块
Python讀寫word文檔有現成的庫可以處理。我這里采用 python-docx??梢杂胮ip install python-docx安裝一下。
這里說一句,ppt和excel也有類似的庫哦,而且是直接讀取文件里面的xml數據。所以doc格式得另找其他庫處理,doc格式不是基于xml的。
幫助文檔:http://python-docx.readthedocs.org/en/latest/
1、新建或打開文件。這個比較簡單用docx的Document類,若指定路徑則是打開文檔;若沒有指定路徑則是新建文檔。
import?docx# 新建文檔 doc_new?=?docx.Document()# 讀取文檔 doc?=?docx.Document(ur'C:\1.docx')2、保存文件。有打開,就有保存。用Document類的save方法,其中參數是保存的文件路徑,或者要保存的文件流。一般指定路徑即可。
doc.save(path_or_stream)3、對象集合。python-docx包含了word文檔的相關對象集合。
-
doc.paragraphs? ? ? ? ? ? # 段落集合
-
doc.tables? ? ? ? ? ? ? ? ? ? # 表格集合
-
doc.sections? ? ? ? ? ? ? ? # 節??集合
-
doc.styles? ? ? ? ? ? ? ? ? ? # 樣式集合
-
doc.inline_shapes? ? ? ?#?內置圖形?等等...
4、插入段落。段落是word最基本的對象之一。
doc.add_paragraph(u'第一段', style=None)? ?# 插入一個段落,文本為“第一段”# 默認是不應用樣式,這里也可以不寫style參數,或者指定一個段落樣式doc.add_paragraph(u'第二段', style='Heading?2')# 這些樣式都是word默認帶有的樣式,可以直接羅列出來有哪些段落樣式 print?[s.name?for?s?in?doc.styles?if?s.type==1]5、新增樣式。這個幫助文檔里面說得不仔細,而且還是英文的。我手頭上的項目用到這個,就自己琢磨出怎么使用,如下。
#coding:utf-8from?docx?import?Document from?docx.shared?import?RGBColor?#這個是docx的顏色類# 新建文檔 doc?=?Document()# 新增樣式(第一個參數是樣式名稱,第二個參數是樣式類型:1代表段落;2代表字符;3代表表格) style?=?doc.styles.add_style('style?name?1',?2)# 設置具體樣式(修改樣式字體為藍色,當然還可以修改其他的,大家自己嘗試) style.font.color.rgb?=?RGBColor(0x0,?0x0,?0xff)6、應用字符樣式。字符自然是在段落里面的,可以采用下面方法給段落追加文字和設置字符樣式。
# 插入一個空白段落 p?=?doc.add_paragraph('')p.add_run('123',?style="Heading?1?Char")p.add_run('456')p.add_run('789',?style="Heading?2?Char")# 這樣一個段落就應用了兩個字符樣式,中間“456”就沒應用樣式 print?p.text??# 輸出結果是u'123456789'?也還是連續的7、設置字體。當然可以不用通過設置樣式對某些字進行設置,也可以直接設置。
p?=?doc.add_paragraph('')r?=?p.add_run('123')r.font.bold?=?True????# 加粗r.font.italic?=?True??# 傾斜?等等...8、表格操作。表格也是經常用到的一種對象類型。
# 新建一個2x3的表格,style可以不寫 table=doc.add_table(rows=2,cols=3,style=None)# 可以用table?的rows和columns得到這個表格的行數和列數 print?len(table.rows) print?len(table.columns)# 遍歷表格 for?row?in?table.rows:row.cells[0].text?=?'1'# print?row.cells[0].text# 新增行或列 table.add_row() table.add_column()Word常見操作差不多就是這些。大家可以查看幫助文檔,也可以用dir和help查看對象的方法屬性和幫助。
總結
以上是生活随笔為你收集整理的Python:docx模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python:win32com 模块
- 下一篇: Python:glob模块