Python操做Wordhtml
使用python操做word python
有兩種方式:面試
1.使用win32com擴展包數據庫
只對windows平臺有效windows
# coding=utf-8 import win32com from win32com.client import Dispatch, DispatchEx word = Dispatch('Word.Application') # 打開word應用程序 # word = DispatchEx('Word.Application') #啓動獨立的進程 word.Visible = 0 # 後臺運行,不顯示 word.DisplayAlerts = 0 # 不警告 path = 'G:/WorkSpace/Python/tmp/test.docx' # word文件路徑 doc = word.Documents.Open(FileName=path, Encoding='gbk') # content = doc.Range(doc.Content.Start, doc.Content.End) # content = doc.Range() print '----------------' print '段落數: ', doc.Paragraphs.count # 利用下標遍歷段落 for i in range(len(doc.Paragraphs)): para = doc.Paragraphs[i] print para.Range.text print '-------------------------' # 直接遍歷段落 for para in doc.paragraphs: print para.Range.text # print para #只能用於文檔內容全英文的狀況 doc.Close() # 關閉word文檔 # word.Quit #關閉word程序
2.使用docx擴展包網絡
優勢:不依賴操做系統,跨平臺ide
安裝:工具
pip install python-docx
參考文檔: https://python-docx.readthedocs.io/en/latest/index.html 學習
代碼:ui
import docx def read_docx(file_name): doc = docx.Document(file_name) content = '\n'.join([para.text for para in doc.paragraphs]) return content
建立表格
# coding=utf-8 import docx doc = docx.Document() table = doc.add_table(rows=1, cols=3, style='Table Grid') #建立帶邊框的表格 hdr_cells = table.rows[0].cells # 獲取第0行全部全部單元格 hdr_cells[0].text = 'Name' hdr_cells[1].text = 'Id' hdr_cells[2].text = 'Desc' # 添加三行數據 data_lines = 3 for i in range(data_lines): cells = table.add_row().cells cells[0].text = 'Name%s' % i cells[1].text = 'Id%s' % i cells[2].text = 'Desc%s' % i rows = 2 cols = 4 table = doc.add_table(rows=rows, cols=cols) val = 1 for i in range(rows): cells = table.rows[i].cells for j in range(cols): cells[j].text = str(val * 10) val += 1 doc.save('tmp.docx')
讀取表格
# coding=utf-8 import docx doc = docx.Document('tmp.docx') for table in doc.tables: # 遍歷全部表格 print '----table------' for row in table.rows: # 遍歷表格的全部行 # row_str = '\t'.join([cell.text for cell in row.cells]) # 一行數據 # print row_str for cell in row.cells: print cell.text, '\t', print
相關樣式參考: https://python-docx.readthedocs.io/en/latest/user/styles-understanding.html
python調用word接口主要用到的模板爲python-docx,基本操做官方文檔有說明。
使用python新建一個word文檔,操做就像文檔裏介紹的那樣:
from docx import Document from docx.shared import Inches document = Document() document.add_heading('Document Title', 0) #插入標題 p = document.add_paragraph('A plain paragraph having some ') #插入段落 p.add_run('bold').bold = True p.add_run(' and some ') p.add_run('italic.').italic = True document.add_heading('Heading, level 1', level=1) document.add_paragraph('Intense quote', style='IntenseQuote') document.add_paragraph( 'first item in unordered list', style='ListBullet' ) document.add_paragraph( 'first item in ordered list', style='ListNumber' ) document.add_picture('monty-truth.png', width=Inches(1.25)) #插入圖片 table = document.add_table(rows=1, cols=3) #插入表格 hdr_cells = table.rows[0].cells hdr_cells[0].text = 'Qty' hdr_cells[1].text = 'Id' hdr_cells[2].text = 'Desc' for item in recordset: row_cells = table.add_row().cells row_cells[0].text = str(item.qty) row_cells[1].text = str(item.id) row_cells[2].text = item.desc document.add_page_break() document.save('demo.docx') #保存文檔
讀取和編輯一個已有的word文檔,只需在一開始添加上文件路徑就好了,以下:
from docx import Document from docx.shared import Inches document = Document('demo.docx') #打開文件demo.docx for paragraph in document.paragraphs: print(paragraph.text) #打印各段落內容文本 document.add_paragraph( 'Add new paragraph', style='ListNumber' ) #添加新段落 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文檔中所插入的全部圖片。
import zipfile f=zipfile.ZipFile('demo.docx','r') for filename in f.namelist(): f.extract(filename)
About Me
........................................................................................................................ ● 本文做者:小麥苗,部份內容整理自網絡,如有侵權請聯繫小麥苗刪除 ● 本文在itpub( http://blog.itpub.net/26736162 )、博客園( http://www.cnblogs.com/lhrbest )和我的weixin公衆號( xiaomaimiaolhr )上有同步更新 ● 本文itpub地址: http://blog.itpub.net/26736162 ● 本文博客園地址: http://www.cnblogs.com/lhrbest ● 本文pdf版、我的簡介及小麥苗雲盤地址: http://blog.itpub.net/26736162/viewspace-1624453/ ● 數據庫筆試面試題庫及解答: http://blog.itpub.net/26736162/viewspace-2134706/ ● DBA寶典今日頭條號地址: http://www.toutiao.com/c/user/6401772890/#mid=1564638659405826 ........................................................................................................................ ● QQ羣號: 230161599 (滿) 、618766405 ● weixin羣:可加我weixin,我拉你們進羣,非誠勿擾 ● 聯繫我請加QQ好友 ( 646634621 ) ,註明添加原因 ● 於 2019-01-01 06:00 ~ 2019-01-31 24:00 在魔都完成 ● 最新修改時間:2019-01-01 06:00 ~ 2019-01-31 24:00 ● 文章內容來源於小麥苗的學習筆記,部分整理自網絡,如有侵權或不當之處還請諒解 ● 版權全部,歡迎分享本文,轉載請保留出處 ........................................................................................................................ ● 小麥苗的微店 : https://weidian.com/s/793741433?wfr=c&ifr=shopdetail ● 小麥苗出版的數據庫類叢書 : http://blog.itpub.net/26736162/viewspace-2142121/ ● 小麥苗OCP、OCM、高可用網絡班 : http://blog.itpub.net/26736162/viewspace-2148098/ ● 小麥苗騰訊課堂主頁 : https://lhr.ke.qq.com/ ........................................................................................................................ 使用 weixin客戶端 掃描下面的二維碼來關注小麥苗的weixin公衆號( xiaomaimiaolhr )及QQ羣(DBA寶典)、添加小麥苗weixin, 學習最實用的數據庫技術。 ........................................................................................................................ |
來自 「 ITPUB博客 」 ,連接:http://blog.itpub.net/26736162/viewspace-2375245/,如需轉載,請註明出處,不然將追究法律責任。