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 相关文章推荐
Python3里的super()和__class__使用介绍
Apr 23 Python
简单介绍Python中利用生成器实现的并发编程
May 04 Python
详解python中requirements.txt的一切
Mar 03 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
Jul 06 Python
Python读写及备份oracle数据库操作示例
May 17 Python
python添加模块搜索路径和包的导入方法
Jan 19 Python
django2.0扩展用户字段示例
Feb 13 Python
情人节快乐! python绘制漂亮玫瑰
Aug 18 Python
python实现银联支付和支付宝支付接入
May 07 Python
在 Windows 下搭建高效的 django 开发环境的详细教程
Jul 27 Python
Python数据结构之队列详解
Mar 21 Python
一行Python命令实现批量加水印
Apr 07 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
php二分法在IP地址查询中的应用
2008/08/12 PHP
PHP无法访问远程mysql的问题分析及解决
2013/05/16 PHP
分享下页面关键字抓取www.icbase.com站点代码(带asp.net参数的)
2014/01/30 PHP
ThinkPHP中redirect用法分析
2014/12/05 PHP
PHP XML Expat解析器知识点总结
2019/02/15 PHP
阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)
2007/05/08 Javascript
js textarea自动增高并隐藏滚动条
2009/12/16 Javascript
Javascript处理DOM元素事件实现代码
2012/05/23 Javascript
JS命名空间的另一种实现
2013/08/09 Javascript
ExtJS4中使用mixins实现多继承示例
2013/12/03 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
js判断某个方法是否存在实例代码
2015/01/10 Javascript
JavaScript蒙板(model)功能的简单实现代码
2016/08/04 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
vuejs动态组件给子组件传递数据的方法详解
2016/09/09 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
jQuery手指滑动轮播效果
2016/12/22 Javascript
微信小程序之页面拦截器的示例代码
2017/09/07 Javascript
JavaScript实现带有子菜单和控件的slider轮播图效果
2017/11/01 Javascript
基于vue 实现token验证的实例代码
2017/12/14 Javascript
解决在vue项目中,发版之后,背景图片报错,路径不对的问题
2018/03/06 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
JS script脚本中async和defer区别详解
2020/06/24 Javascript
使用vue3重构拼图游戏的实现示例
2021/01/25 Vue.js
python统计日志ip访问数的方法
2015/07/06 Python
Python 实现引用其他.py文件中的类和类的方法
2018/04/29 Python
CentOS 7下安装Python3.6 及遇到的问题小结
2018/11/08 Python
用python建立两个Y轴的XY曲线图方法
2019/07/08 Python
PyTorch加载预训练模型实例(pretrained)
2020/01/17 Python
Python semaphore evevt生产者消费者模型原理解析
2020/03/18 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
CSS3中HSL和HSLA的简单使用示例
2015/07/14 HTML / CSS
运动会通讯稿100字
2014/01/31 职场文书
售房委托书
2014/08/30 职场文书
工会2014法制宣传日活动总结
2014/11/01 职场文书
vue使用v-model进行跨组件绑定的基本实现方法
2021/04/28 Vue.js