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根据出生日期返回年龄的方法
Mar 26 Python
python函数形参用法实例分析
Aug 04 Python
Python使用logging结合decorator模式实现优化日志输出的方法
Apr 16 Python
在python3环境下的Django中使用MySQL数据库的实例
Aug 29 Python
Python计算斗牛游戏概率算法实例分析
Sep 26 Python
Python采集代理ip并判断是否可用和定时更新的方法
May 07 Python
使用Python监控文件内容变化代码实例
Jun 04 Python
浅谈DataFrame和SparkSql取值误区
Jun 09 Python
Python自定义一个异常类的方法
Jun 27 Python
python ctypes库2_指定参数类型和返回类型详解
Nov 19 Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 Python
聊聊Python String型列表求最值的问题
Jan 18 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简单封装了一些常用JS操作
2007/02/25 PHP
PHP+jQuery 注册模块的改进(一):验证码存入SESSION
2014/10/14 PHP
PHP实现支持SSL连接的SMTP邮件发送类
2015/03/05 PHP
PHP通过微信跳转的Code参数获取用户的openid(关键代码)
2016/07/06 PHP
php下的原生ajax请求用法实例分析
2020/02/28 PHP
html下载本地
2006/06/19 Javascript
使用Microsoft Ajax Minifier减小JavaScript文件大小的方法
2010/04/01 Javascript
jQuery的缓存机制浅析
2014/06/07 Javascript
jquery 实现input输入什么div图层显示什么
2014/06/15 Javascript
Javascript 中创建自定义对象的方法汇总
2014/12/04 Javascript
JavaScript实现计算字符串中出现次数最多的字符和出现的次数
2015/03/12 Javascript
JS实现为表格动态添加标题的方法
2015/03/31 Javascript
AngularJs ng-repeat 嵌套如何获取外层$index
2016/09/21 Javascript
js表单登陆验证示例
2016/10/19 Javascript
最细致的vue.js基础语法 值得收藏!
2016/11/03 Javascript
微信小程序开发探究
2016/12/27 Javascript
Angular实现搜索框及价格上下限功能
2018/01/19 Javascript
javascript与PHP动态往类中添加方法对比
2018/03/21 Javascript
详解如何写出一个利于扩展的vue路由配置
2019/05/16 Javascript
Vue+ElementUI项目使用webpack输出MPA的方法
2019/08/27 Javascript
Node.js开发之套接字(socket)编程入门示例
2019/11/05 Javascript
Node.js中的异步生成器与异步迭代详解
2021/01/31 Javascript
[06:43]DAC2018 4.5 SOLO赛 Maybe vs Paparazi
2018/04/06 DOTA
用python登录Dr.com思路以及代码分享
2014/06/25 Python
python实现简单的TCP代理服务器
2014/10/08 Python
零基础写python爬虫之打包生成exe文件
2014/11/06 Python
python学习笔记之列表(list)与元组(tuple)详解
2017/11/23 Python
ActiveMQ:使用Python访问ActiveMQ的方法
2019/01/30 Python
系统管理员的职责包括那些?管理的对象是什么?
2013/01/18 面试题
职业生涯规划书的格式
2013/12/29 职场文书
出国考察邀请函
2014/01/21 职场文书
金融学专业大学生职业生涯规划
2014/03/07 职场文书
小学校园广播稿(3篇)
2014/09/19 职场文书
酒店宣传语大全
2015/07/13 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
磁贴还没死, 微软Win11可修改注册表找回Win10开始菜单
2021/11/21 数码科技