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中的面向对象编程详解(上)
Apr 13 Python
Python 内置函数complex详解
Oct 23 Python
用python结合jieba和wordcloud实现词云效果
Sep 05 Python
浅析python打包工具distutils、setuptools
Apr 20 Python
使用python将请求的requests headers参数格式化方法
Jan 02 Python
用Python解决x的n次方问题
Feb 08 Python
零基础使用Python读写处理Excel表格的方法
May 02 Python
Python序列化与反序列化pickle用法实例
Nov 11 Python
Python for循环搭配else常见问题解决
Feb 11 Python
Python try except finally资源回收的实现
Jan 25 Python
pytorch实现手写数字图片识别
May 20 Python
使用pipenv管理python虚拟环境的全过程
Sep 25 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的ob_start();控制您的浏览器cache!
2006/11/25 PHP
PHP设置图片文件上传大小的具体实现方法
2013/10/11 PHP
ecshop后台编辑器替换成ueditor编辑器
2015/03/03 PHP
PHP获取数组最大值下标的方法
2015/05/12 PHP
PHP实现文件下载【实例分享】
2017/04/28 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
javascript学习笔记(十五) js间歇调用和超时调用
2012/06/20 Javascript
js中判断Object、Array、Function等引用类型对象是否相等
2012/08/29 Javascript
下拉列表select 由左边框移动到右边示例
2013/12/04 Javascript
用Jquery.load载入页面实现局部刷新
2014/01/22 Javascript
jquery实现的导航固定效果
2014/04/28 Javascript
简介BootStrap model弹出框的使用
2016/04/27 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
javascript实现根据汉字获取简拼
2016/09/25 Javascript
angularjs实现首页轮播图效果
2017/04/14 Javascript
JS计算两个时间相差分钟数的方法示例
2018/01/10 Javascript
React Native开发封装Toast与加载Loading组件示例
2018/09/08 Javascript
python获取Linux下文件版本信息、公司名和产品名的方法
2014/10/05 Python
使用Python编写Linux系统守护进程实例
2015/02/03 Python
python 调用HBase的简单实例
2016/12/18 Python
用python写一个windows下的定时关机脚本(推荐)
2017/03/21 Python
python实现分页效果
2017/10/25 Python
Python使用xlwt模块操作Excel的方法详解
2018/03/27 Python
python学习之hook钩子的原理和使用
2018/10/25 Python
numpy.array 操作使用简单总结
2019/11/08 Python
python实现字典嵌套列表取值
2019/12/16 Python
python 线性回归分析模型检验标准--拟合优度详解
2020/02/24 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
python3.6.5基于kerberos认证的hive和hdfs连接调用方式
2020/06/06 Python
使用html5 canvas绘制圆环动效
2019/06/03 HTML / CSS
大型活动组织方案
2014/05/10 职场文书
李敖北大演讲稿
2014/05/24 职场文书
基层党员对照检查材料
2014/08/25 职场文书
忠诚教育心得体会
2014/09/03 职场文书
工地食品安全责任书
2015/05/09 职场文书
MySQL数据库如何给表设置约束详解
2022/03/13 MySQL