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/,如需转载,请注明出处,不然将追究法律责任。