好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

Python操作Word

Python操作Word

使用python操作word ?

有两种方式:

使用win32com 使用docx

?

1.使用win32com扩展包

只对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扩展包

优点:不依赖操作系统,跨平台

安装:

pip?install?python-docx

参考文档:? https://python-docx.readthedocs.io/en/latest/index.html

代码:

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://HdhCmsTestcnblogs测试数据/lhrbest )和个人weixin公众号( xiaomaimiaolhr )上有同步更新

● 本文itpub地址: http://blog.itpub.net/26736162

● 本文博客园地址: http://HdhCmsTestcnblogs测试数据/lhrbest

● 本文pdf版、个人简介及小麦苗云盘地址: http://blog.itpub.net/26736162/viewspace-1624453/

● 数据库笔试面试题库及解答: http://blog.itpub.net/26736162/viewspace-2134706/

● DBA宝典今日头条号地址: http://HdhCmsTesttoutiao测试数据/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测试数据/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测试数据/

........................................................................................................................

使用 weixin客户端 扫描下面的二维码来关注小麦苗的weixin公众号( xiaomaimiaolhr )及QQ群(DBA宝典)、添加小麦苗weixin, 学习最实用的数据库技术。

........................................................................................................................

?

?

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26736162/viewspace-2375245/,如需转载,请注明出处,否则将追究法律责任。

查看更多关于Python操作Word的详细内容...

  阅读:42次