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 相关文章推荐
sqlalchemy对象转dict的示例
Apr 22 Python
Python import自定义模块方法
Feb 12 Python
Python获取linux主机ip的简单实现方法
Apr 18 Python
Python制作刷网页流量工具
Apr 23 Python
pandas将numpy数组写入到csv的实例
Jul 04 Python
Python3.4学习笔记之 idle 清屏扩展插件用法分析
Mar 01 Python
numpy.linspace函数具体使用详解
May 27 Python
对DJango视图(views)和模版(templates)的使用详解
Jul 17 Python
基于python3实现倒叙字符串
Feb 18 Python
如何解决安装python3.6.1失败
Jul 01 Python
Flask使用SQLAlchemy实现持久化数据
Jul 16 Python
Qt自定义Plot实现曲线绘制的详细过程
Nov 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
全国FM电台频率大全 - 9 上海市
2020/03/11 无线电
php在window iis的莫名问题的测试方法
2013/05/14 PHP
(PHP实现)只使用++运算实现加法,减法,乘法,除法
2013/06/27 PHP
解析web文件操作常见安全漏洞(目录、文件名检测漏洞)
2013/06/29 PHP
PHP PDOStatement对象bindpram()、bindvalue()和bindcolumn之间的区别
2014/11/20 PHP
thinkPHP使用pclzip打包备份mysql数据库的方法
2016/04/30 PHP
php实用代码片段整理
2016/11/12 PHP
PHP自动识别当前使用移动终端
2018/05/21 PHP
asp批量修改记录的代码
2008/06/25 Javascript
Javascript 生成指定范围数值随机数
2009/01/09 Javascript
基于jquery实现的类似百度搜索的输入框自动完成功能
2011/08/23 Javascript
基于jquery的固定表头和列头的代码
2012/05/03 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
JS检测移动端横竖屏的代码
2016/05/30 Javascript
JavaScript实现父子dom同时绑定两个点击事件,一个用捕获,一个用冒泡时执行顺序的方法
2017/03/30 Javascript
微信小程序使用navigateTo数据传递的实例
2017/09/26 Javascript
2种简单的js倒计时方式
2017/10/20 Javascript
vue项目部署上线遇到的问题及解决方法
2018/06/10 Javascript
vue项目中实现图片预览的公用组件功能
2018/10/26 Javascript
详解nuxt路由鉴权(express模板)
2018/11/21 Javascript
JS+php后台实现文件上传功能详解
2019/03/02 Javascript
JS数组reduce()方法原理及使用技巧解析
2020/07/14 Javascript
vue 授权获取微信openId操作
2020/11/13 Javascript
python显示生日是星期几的方法
2015/05/27 Python
python实现图像识别功能
2018/01/29 Python
使用Python和Scribus创建一个RGB立方体的方法
2019/07/17 Python
selenium+python自动化78-autoit参数化与批量上传功能的实现
2021/03/04 Python
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
电子商务毕业生求职信
2013/11/10 职场文书
综合办公室个人的自我评价
2013/12/22 职场文书
研究生毕业鉴定
2014/01/29 职场文书
2014新课程改革心得体会
2014/03/10 职场文书
小学阳光体育活动总结
2014/07/05 职场文书
委托书怎样写
2014/08/30 职场文书
企业法人任命书
2015/09/21 职场文书
2016党员学习心得体会范文
2016/01/23 职场文书