当前位置:   article > 正文

Python操作Word

content=doc[]

Python操作Word


有两种方式:

  • 使用win32com
  • 使用docx

 

1.使用win32com扩展包

只对windows平台有效

  1. # coding=utf-8
  2. import win32com
  3. from win32com.client import Dispatch, DispatchEx
  4. word = Dispatch('Word.Application')  # 打开word应用程序
  5. # word = DispatchEx('Word.Application') #启动独立的进程
  6. word.Visible = 0  # 后台运行,不显示
  7. word.DisplayAlerts = 0  # 不警告
  8. path = 'G:/WorkSpace/Python/tmp/test.docx'  # word文件路径
  9. doc = word.Documents.Open(FileName=path, Encoding='gbk')
  10. # content = doc.Range(doc.Content.Start, doc.Content.End)
  11. # content = doc.Range()
  12. print '----------------'
  13. print '段落数: ', doc.Paragraphs.count
  14. # 利用下标遍历段落
  15. for i in range(len(doc.Paragraphs)):
  16.     para = doc.Paragraphs[i]
  17.     print para.Range.text
  18. print '-------------------------'
  19. # 直接遍历段落
  20. for para in doc.paragraphs:
  21.     print para.Range.text
  22.     # print para  #只能用于文档内容全英文的情况
  23. doc.Close()  # 关闭word文档
  24. # word.Quit  #关闭word程序

 

2.使用docx扩展包

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

安装:

pip install python-docx

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

代码:

  1. import docx
  2. def read_docx(file_name):
  3.     doc = docx.Document(file_name)
  4.     content = '\n'.join([para.text for para in doc.paragraphs])
  5.     return content


创建表格

  1. # coding=utf-8
  2. import docx
  3. doc = docx.Document()
  4. table = doc.add_table(rows=1, cols=3, style='Table Grid'#创建带边框的表格
  5. hdr_cells = table.rows[0].cells  # 获取第0行所有所有单元格
  6. hdr_cells[0].text = 'Name'
  7. hdr_cells[1].text = 'Id'
  8. hdr_cells[2].text = 'Desc'
  9. # 添加三行数据
  10. data_lines = 3
  11. for i in range(data_lines):
  12.     cells = table.add_row().cells
  13.     cells[0].text = 'Name%s' % i
  14.     cells[1].text = 'Id%s' % i
  15.     cells[2].text = 'Desc%s' % i
  16. rows = 2
  17. cols = 4
  18. table = doc.add_table(rows=rows, cols=cols)
  19. val = 1
  20. for i in range(rows):
  21.     cells = table.rows[i].cells
  22.     for j in range(cols):
  23.         cells[j].text = str(val * 10)
  24.         val += 1
  25. doc.save('tmp.docx')

读取表格

  1. # coding=utf-8
  2. import docx
  3. doc = docx.Document('tmp.docx')
  4. for table in doc.tables:  # 遍历所有表格
  5.     print '----table------'
  6.     for row in table.rows:  # 遍历表格的所有行
  7.         # row_str = '\t'.join([cell.text for cell in row.cells])  # 一行数据
  8.         # print row_str
  9.         for cell in row.cells:
  10.             print cell.text, '\t',
  11.         print


 相关样式参考:  https://python-docx.readthedocs.io/en/latest/user/styles-understanding.html


使用PYTHON编辑和读取WORD文档

python调用word接口主要用到的模板为python-docx,基本操作官方文档有说明。

python-docx官方文档地址

使用python新建一个word文档,操作就像文档里介绍的那样:

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

读取和编辑一个已有的word文档,只需在一开始添加上文件路径就行了,如下:

  1. from docx import Document
  2. from docx.shared import Inches
  3. document = Document('demo.docx')  #打开文件demo.docx
  4. for paragraph in document.paragraphs:
  5.     print(paragraph.text)  #打印各段落内容文本
  6. document.add_paragraph(
  7.     'Add new paragraph', style='ListNumber'
  8. )    #添加新段落
  9. 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)






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

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/661081
推荐阅读
相关标签
  

闽ICP备14008679号