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解决方案:WindowsError: [Error 2]
Aug 28 Python
fastcgi文件读取漏洞之python扫描脚本
Apr 23 Python
python中requests库session对象的妙用详解
Oct 30 Python
Python 给某个文件名添加时间戳的方法
Oct 16 Python
在Python中获取两数相除的商和余数方法
Nov 10 Python
Django restframework 源码分析之认证详解
Feb 22 Python
Python实现的合并两个有序数组算法示例
Mar 04 Python
解决Python3 抓取微信账单信息问题
Jul 19 Python
50行Python代码获取高考志愿信息的实现方法
Jul 23 Python
Linux下通过python获取本机ip方法示例
Sep 06 Python
PyTorch的Debug指南
May 07 Python
python 详解turtle画爱心代码
Feb 15 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下常用正则表达式整理
2010/10/26 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
PHP7安装Redis扩展教程【Linux与Windows平台】
2016/09/30 PHP
PHP的消息通信机制测试实例
2016/11/10 PHP
php获取字符串前几位的实例(substr返回字符串的子串用法)
2017/03/08 PHP
php app支付宝回调(异步通知)详解
2018/07/25 PHP
javascript编程起步(第五课)
2007/01/10 Javascript
js 文件引入实现代码
2010/04/23 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
实例讲解JavaScript中的this指向错误解决方法
2016/06/13 Javascript
jquery弹出框插件jquery.ui.dialog用法分析
2016/08/20 Javascript
ThinkPHP+jquery实现“加载更多”功能代码
2017/03/11 Javascript
js判断节假日实例代码
2017/12/27 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
利用angular自动编译andriod APK的绕坑经历分享
2019/03/08 Javascript
详解Jest结合Vue-test-utils使用的初步实践
2019/06/27 Javascript
Vue实现验证码功能
2019/12/03 Javascript
ES6对象操作实例详解
2020/05/23 Javascript
Python 正则表达式(转义问题)
2014/12/15 Python
发布你的Python模块详解
2016/09/15 Python
你真的了解Python的random模块吗?
2017/12/12 Python
Python读csv文件去掉一列后再写入新的文件实例
2017/12/28 Python
Python读取word文本操作详解
2018/01/22 Python
Python文本统计功能之西游记用字统计操作示例
2018/05/07 Python
python绘制圆柱体的方法
2018/07/02 Python
python numpy 显示图像阵列的实例
2018/07/02 Python
Django stark组件使用及原理详解
2019/08/22 Python
简单介绍一下pyinstaller打包以及安全性的实现
2020/06/02 Python
python读写数据读写csv文件(pandas用法)
2020/12/14 Python
丝绸和人造花卉、植物和树木:Nearly Natural
2018/11/28 全球购物
安全生产中长期规划实施方案
2014/02/21 职场文书
行政求职信
2014/07/04 职场文书
2014年大学生村官工作总结
2014/11/19 职场文书
生产实习心得体会范文
2016/01/22 职场文书
确保减税降费落地生根,用实实在在措施
2019/07/19 职场文书
OpenCV-Python实现轮廓的特征值
2021/06/09 Python