使用python編輯和讀取word文檔


python調用word接口主要用到的模板為python-docx,基本操作官方文檔有說明。

python-docx官方文檔地址

 

使用python新建一個word文檔,操作就像文檔里介紹的那樣:

 1 from docx import Document
 2 from docx.shared import Inches
 3 
 4 document = Document()
 5 
 6 document.add_heading('Document Title', 0)  #插入標題
 7 
 8 p = document.add_paragraph('A plain paragraph having some ')   #插入段落
 9 p.add_run('bold').bold = True
10 p.add_run(' and some ')
11 p.add_run('italic.').italic = True
12 
13 document.add_heading('Heading, level 1', level=1)
14 document.add_paragraph('Intense quote', style='IntenseQuote')
15 
16 document.add_paragraph(
17     'first item in unordered list', style='ListBullet'
18 )
19 document.add_paragraph(
20     'first item in ordered list', style='ListNumber'
21 )
22 
23 document.add_picture('monty-truth.png', width=Inches(1.25)) #插入圖片
24 
25 table = document.add_table(rows=1, cols=3) #插入表格
26 hdr_cells = table.rows[0].cells
27 hdr_cells[0].text = 'Qty'
28 hdr_cells[1].text = 'Id'
29 hdr_cells[2].text = 'Desc'
30 for item in recordset:
31     row_cells = table.add_row().cells
32     row_cells[0].text = str(item.qty)
33     row_cells[1].text = str(item.id)
34     row_cells[2].text = item.desc
35 
36 document.add_page_break()
37 
38 document.save('demo.docx')  #保存文檔

讀取和編輯一個已有的word文檔,只需在一開始添加上文件路徑就行了,如下:

 1 from docx import Document
 2 from docx.shared import Inches
 3 
 4 document = Document('demo.docx')  #打開文件demo.docx
 5 for paragraph in document.paragraphs:
 6     print(paragraph.text)  #打印各段落內容文本
 7 
 8 document.add_paragraph(
 9     'Add new paragraph', style='ListNumber'
10 )    #添加新段落
11 
12 document.save('demo.docx') #保存文檔

如果是想讀取其中的圖片或是更復雜地編輯,首先我們需要先來認識下docx文檔的格式組成:

docx是Microsoft Office2007之后版本使用的,用新的基於XML的壓縮文件格式取代了其目前專有的默認文件格式,在傳統的文件名擴展名后面添加了字母“x”(即“.docx”取代“.doc”、“.xlsx”取代“.xls”、“.pptx”取代“.ppt”)。

docx格式的文件本質上是一個ZIP文件。將一個docx文件的后綴改為ZIP后是可以用解壓工具打開或是解壓的。事實上,Word2007的基本文件就是ZIP格式的,他可以算作是docx文件的容器。

docx 格式文件的主要內容是保存為XML格式的,但文件並非直接保存於磁盤。它是保存在一個ZIP文件中,然后取擴展名為docx。將.docx 格式的文件后綴改為ZIP后解壓, 可以看到解壓出來的文件夾中有word這樣一個文件夾,它包含了Word文檔的大部分內容。而其中的document.xml文件則包含了文檔的主要文本內容。

word目錄下:

document.xml文件內容:

media目錄下存放word文檔中插入的圖片:

所以,我們可以使用手工的方法編輯文件document.xml來對該word文檔內容進行編輯,或是提取文檔media中圖片文件的方式來提取該word文檔中所插入的所有圖片。

1 import zipfile
2 
3 f=zipfile.ZipFile('demo.docx','r') 
4 
5 for filename in f.namelist():
6     f.extract(filename)

 


免責聲明!

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



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