Python操作word常见方法示例【win32com与docx模块】


Posted in Python onJuly 17, 2018

本文实例讲述了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程序设计有所帮助。

Python 相关文章推荐
Python sys.argv用法实例
May 28 Python
Python+Opencv识别两张相似图片
Mar 23 Python
Python自动生产表情包
Mar 17 Python
对python-3-print重定向输出的几种方法总结
May 11 Python
python+PyQT实现系统桌面时钟
Jun 16 Python
python3 自动识别usb连接状态,即对usb重连的判断方法
Jul 03 Python
python利用re,bs4,requests模块获取股票数据
Jul 29 Python
Django Aggregation聚合使用方法解析
Aug 01 Python
python hash每次调用结果不同的原因
Nov 21 Python
使用pyshp包进行shapefile文件修改的例子
Dec 06 Python
python 5个实用的技巧
Sep 27 Python
从np.random.normal()到正态分布的拟合操作
Jun 02 Python
python查看列的唯一值方法
Jul 17 #Python
Python使用win32com模块实现数据库表结构自动生成word表格的方法
Jul 17 #Python
python 数字类型和字符串类型的相互转换实例
Jul 17 #Python
python 移除字符串尾部的数字方法
Jul 17 #Python
基于python代码实现简易滤除数字的方法
Jul 17 #Python
Sanic框架Cookies操作示例
Jul 17 #Python
Sanic框架配置操作分析
Jul 17 #Python
You might like
上海永华YH-R296(华普R-96)12波段立体声收音机的分析和打理
2021/03/02 无线电
dede3.1分页文字采集过滤规则详说(图文教程)续二
2007/04/03 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
var与Javascript变量隐式声明
2009/09/17 Javascript
基于javascript实现判断移动终端浏览器版本信息
2014/12/09 Javascript
使用AngularJS创建自定义的过滤器的方法
2015/06/18 Javascript
详解JavaScript中的构造器Constructor模式
2016/01/14 Javascript
Jquery技巧(必须掌握)
2016/03/16 Javascript
最常见的左侧分类菜单栏jQuery实现代码
2016/11/28 Javascript
Reactjs实现通用分页组件的实例代码
2017/01/19 Javascript
jquery表单提交带错误信息提示效果
2017/03/09 Javascript
vue+vux实现移动端文件上传样式
2017/07/28 Javascript
浅谈React Native 中组件的生命周期
2017/09/08 Javascript
jQuery响应滚动条事件功能示例
2017/10/14 jQuery
利用Angular2 + Ionic3开发IOS应用实例教程
2018/01/15 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
Node.Js中实现端口重用原理详解
2018/05/03 Javascript
一次Webpack配置文件的分离实战记录
2018/11/30 Javascript
@angular前端项目代码优化之构建Api Tree的方法
2018/12/24 Javascript
微信小程序自定义单项选择器样式
2019/07/25 Javascript
解决vue项目获取dom元素宽高总是不准确问题
2020/07/29 Javascript
[38:39]完美世界DOTA2联赛循环赛 IO vs GXR BO2第二场 11.04
2020/11/05 DOTA
Python使用urllib2获取网络资源实例讲解
2013/12/02 Python
零基础写python爬虫之抓取百度贴吧并存储到本地txt文件改进版
2014/11/06 Python
Python中内置数据类型list,tuple,dict,set的区别和用法
2015/12/14 Python
Windows下python2.7.8安装图文教程
2016/05/26 Python
Python动态生成多维数组的方法示例
2018/08/09 Python
Python线程下使用锁的技巧分享
2018/09/13 Python
Python代码太长换行的实现
2019/07/05 Python
简单了解django文件下载方式
2020/02/10 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
机关党员三严三实心得体会
2014/10/13 职场文书
践行党的群众路线心得体会
2014/11/05 职场文书
巴黎圣母院读书笔记
2015/06/26 职场文书
聊聊Lombok中的@Builder注解使用教程
2021/11/17 Java/Android
win10识别不了U盘怎么办 win10系统读取U盘失败的解决办法
2022/08/05 数码科技