Python操做Word

Python操做Wordhtml


使用python操做word  python

有兩種方式:面試

  • 使用win32com
  • 使用docx

 

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調用word接口主要用到的模板爲python-docx,基本操做官方文檔有說明。

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/,如需轉載,請註明出處,不然將追究法律責任。

相關文章
相關標籤/搜索