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中的super()方法使用简介
Aug 14 Python
从django的中间件直接返回请求的方法
May 30 Python
pygame游戏之旅 python和pygame安装教程
Nov 20 Python
说说如何遍历Python列表的方法示例
Feb 11 Python
python 中的列表生成式、生成器表达式、模块导入
Jun 19 Python
python Django中models进行模糊查询的示例
Jul 18 Python
在pycharm中显示python画的图方法
Aug 31 Python
python+django+selenium搭建简易自动化测试
Aug 19 Python
python tkinter的消息框模块(messagebox,simpledialog)
Nov 07 Python
python+openCV对视频进行截取的实现
Nov 27 Python
解决python3.6用cx_Oracle库连接Oracle的问题
Dec 07 Python
Python通过m3u8文件下载合并ts视频的操作
Apr 16 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命名空间(Namespace)的使用详解
2013/05/04 PHP
PHP下载生成的csv文件及问题总结
2015/08/06 PHP
php mailer类调用远程SMTP服务器发送邮件实现方法
2016/03/04 PHP
懒就要懒到底——鼠标自动点击(含时间判断)
2007/02/20 Javascript
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
jquery checkbox全选、取消全选实现代码
2010/03/05 Javascript
从零开始学习jQuery (六) jquery中的AJAX使用
2011/02/23 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
IE与Firefox在JavaScript上的7个不同句法分享
2011/10/30 Javascript
json的前台操作和后台操作实现代码
2012/01/20 Javascript
从零学JS之你需要了解的几本书
2014/05/19 Javascript
浅谈JavaScript Math和Number对象
2015/01/26 Javascript
vue-cli如何引入bootstrap工具的方法
2017/10/19 Javascript
JavaScript创建对象的常用方式总结
2018/08/10 Javascript
解决vue中post方式提交数据后台无法接收的问题
2018/08/11 Javascript
Vuex 使用 v-model 配合 state的方法
2018/11/13 Javascript
react中Suspense的使用详解
2019/09/01 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
windows系统下Python环境搭建教程
2017/03/28 Python
python3.6 +tkinter GUI编程 实现界面化的文本处理工具(推荐)
2017/12/20 Python
python3.6的venv模块使用详解
2018/08/01 Python
python递归下载文件夹下所有文件
2019/08/31 Python
Python环境Pillow( PIL )图像处理工具使用解析
2019/09/12 Python
python多线程实现代码(模拟银行服务操作流程)
2020/01/13 Python
python生成13位或16位时间戳以及反向解析时间戳的实例
2020/03/03 Python
Jupyter notebook无法导入第三方模块的解决方式
2020/04/15 Python
CSS3 text shadow字体阴影效果
2016/01/08 HTML / CSS
div或img图片高度随宽度自适应的方法
2020/02/06 HTML / CSS
Unix控制后台进程都有哪些进程
2016/09/22 面试题
小学生期末自我鉴定
2014/01/19 职场文书
2014年五四青年节演讲比赛方案
2014/04/22 职场文书
竞选学生会主席演讲稿
2014/04/24 职场文书
公司爱心捐款倡议书
2014/05/14 职场文书
岳庙导游词
2015/02/04 职场文书
PHP面试题 wakeup魔法 Ezpop pop序列化与反序列化
2022/04/11 PHP
MySQL查询日期时间
2022/05/15 MySQL