Python讀寫docx文件


Python讀寫word文檔有現成的庫可以處理。我這里采用 python-docx。可以用pip install python-docx安裝一下。

這里說一句,ppt和excel也有類似的庫哦,而且是直接讀取文件里面的xml數據。所以doc格式得另找其他庫處理,doc格式不是基於xml的。

幫助文檔:http://python-docx.readthedocs.org/en/latest/

1、新建或打開文件。這個比較簡單用docx的Document類,若指定路徑則是打開文檔;若沒有指定路徑則是新建文檔

  1. #coding:utf-8
  2. import docx
  3.  
  4. #新建文檔
  5. doc_new = docx.Document()
  6.  
  7. #讀取文檔
  8. doc = docx.Document( ur'C:\1.docx')

2、保存文件。有打開,就有保存。用Document類的save方法,其中參數是保存的文件路徑,或者要保存的文件流。一般指定路徑即可。

doc.save(path_or_stream)

3、對象集合。python-docx包含了word文檔的相關對象集合。

  1. doc.paragraphs     #段落集合
  2. doc.tables         #表格集合
  3. doc.sections       #節  集合
  4. doc.styles         #樣式集合
  5. doc.inline_shapes  #內置圖形 等等...

4、插入段落。段落是word最基本的對象之一。

  1. doc.add_paragraph( u'第一段',style=None) #插入一個段落,文本為“第一段”
  2. #默認是不應用樣式,這里也可以不寫style參數,或者指定一個段落樣式
  3. doc.add_paragraph( u'第二段',style='Heading 2')
  4.  
  5. #這些樣式都是word默認帶有的樣式,可以直接羅列出來有哪些段落樣式
  6. print [s.name for s in doc.styles if s.type==1]

5、新增樣式。這個幫助文檔里面說得不仔細,而且還是英文的。我手頭上的項目用到這個,就自己琢磨出怎么使用,如下。

  1. #coding:utf-8
  2. from docx import Document
  3. from docx.shared import RGBColor #這個是docx的顏色類
  4.  
  5. #新建文檔
  6. doc = Document()
  7.  
  8. #新增樣式(第一個參數是樣式名稱,第二個參數是樣式類型:1代表段落;2代表字符;3代表表格)
  9. style = doc.styles.add_style( 'style name 1', 2)
  10.  
  11. #設置具體樣式(修改樣式字體為藍色,當然還可以修改其他的,大家自己嘗試)
  12. style.font.color.rgb = RGBColor( 0x0, 0x0, 0xff)
6、應用字符樣式。字符自然是在段落里面的,可以采用下面方法給段落追加文字和設置字符樣式。
  1. #插入一個空白段落
  2. p = doc.add_paragraph( '')
  3. p.add_run( '123', style="Heading 1 Char")
  4. p.add_run( '456')
  5. p.add_run( '789', style="Heading 2 Char")
  6.  
  7. #這樣一個段落就應用了兩個字符樣式,中間“456”就沒應用樣式
  8. print p.text  #輸出結果是u'123456789' 也還是連續的
7、設置字體。當然可以不用通過設置樣式對某些字進行設置,也可以直接設置。
  1. p = doc.add_paragraph( '')
  2. r = p.add_run( '123')
  3. r.font.bold =  True    #加粗
  4. r.font.italic =  True  #傾斜 等等...

8、表格操作。表格也是經常用到的一種對象類型。

  1. #新建一個2x3的表格,style可以不寫
  2. table=doc.add_table(rows= 2,cols=3,style=None)
  3.  
  4. #可以用table 的rows和columns得到這個表格的行數和列數
  5. print len(table.rows)
  6. print len(table.columns)
  7.  
  8. #遍歷表格
  9. for row in table.rows:
  10.     row.cells[ 0].text = '1'
  11.      #print row.cells[0].text
  12.  
  13. #新增行或列
  14. table.add_row()
  15. table.add_column()

Word常見操作差不多就是這些。大家可以查看幫助文檔,也可以用dir和help查看對象的方法屬性和幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM