用python处理MS Word的实例讲解


Posted in Python onMay 08, 2018

使用python工具读写MS Word文件(docx与doc文件),主要利用了python-docx包。本文给出一些常用的操作,并完成一个样例,帮助大家快速入手。

安装

pyhton处理docx文件需要使用python-docx 包,可以利用pip工具很方便的安装,pip工具在python安装路径下的Scripts文件夹中

pip install python-docx

当然你也可以选择使用easy_install或者手动方式进行安装

写入文件内容

此处我们直接给出一个样例,根据自己的需要摘取有用的内容

#coding=utf-8
from docx import Document
from docx.shared import Pt
from docx.shared import Inches
from docx.oxml.ns import qn
#打开文档
document = Document()
#加入不同等级的标题
document.add_heading(u'MS WORD写入测试',0)
document.add_heading(u'一级标题',1)
document.add_heading(u'二级标题',2)
#添加文本
paragraph = document.add_paragraph(u'我们在做文本测试!')
#设置字号
run = paragraph.add_run(u'设置字号、')
run.font.size = Pt(24)
#设置字体
run = paragraph.add_run('Set Font,')
run.font.name = 'Consolas'
#设置中文字体
run = paragraph.add_run(u'设置中文字体、')
run.font.name=u'宋体'
r = run._element
r.rPr.rFonts.set(qn('w:eastAsia'), u'宋体')
#设置斜体
run = paragraph.add_run(u'斜体、')
run.italic = True
#设置粗体
run = paragraph.add_run(u'粗体').bold = True
#增加引用
document.add_paragraph('Intense quote', style='Intense Quote')
#增加无序列表
document.add_paragraph(
 u'无序列表元素1', style='List Bullet'
)
document.add_paragraph(
 u'无序列表元素2', style='List Bullet'
)
#增加有序列表
document.add_paragraph(
 u'有序列表元素1', style='List Number'
)
document.add_paragraph(
 u'有序列表元素2', style='List Number'
)
#增加图像(此处用到图像image.bmp,请自行添加脚本所在目录中)
document.add_picture('image.bmp', width=Inches(1.25))
#增加表格
table = document.add_table(rows=1, cols=3)
hdr_cells = table.rows[0].cells
hdr_cells[0].text = 'Name'
hdr_cells[1].text = 'Id'
hdr_cells[2].text = 'Desc'
#再增加3行表格元素
for i in xrange(3):
 row_cells = table.add_row().cells
 row_cells[0].text = 'test'+str(i)
 row_cells[1].text = str(i)
 row_cells[2].text = 'desc'+str(i)
#增加分页
document.add_page_break()
#保存文件
document.save(u'测试.docx')

该段代码生成的文档样式如下

用python处理MS Word的实例讲解

注:有一个问题没找到如何解决,即如何为表格设置边框线。如果您知道,还请能够指教。

读取文件内容

#coding=utf-8
from docx import Document
#打开文档
document = Document(u'测试.docx')
#读取每段资料
l = [ paragraph.text.encode('gb2312') for paragraph in document.paragraphs];
#输出并观察结果,也可以通过其他手段处理文本即可
for i in l:
 print i
#读取表格材料,并输出结果
tables = [table for table in document.tables];
for table in tables:
 for row in table.rows:
  for cell in row.cells:
   print cell.text.encode('gb2312'),'\t',
  print
 print '\n'

我们仍然使用刚才我们生成的文件,可以看到,输出的结果为

用python处理MS Word的实例讲解

注意:此处我们使用gb2312编码方式读取,主要是保证中文的读写正确。一般情况下,使用的utf-8编码方式。另外,python-docx主要处理docx文件,在加载doc文件时,会出现问题,如果有大量doc文件,建议先将doc文件批量转换为docx文件,例如利用工具doc2doc

以上这篇用python处理MS Word的实例讲解就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python使用新浪微博API发送微博的例子
Apr 10 Python
Python对象转JSON字符串的方法
Apr 27 Python
编写多线程Python服务器 最适合基础
Sep 14 Python
python点击鼠标获取坐标(Graphics)
Aug 10 Python
如何运行带参数的python脚本
Nov 15 Python
Python语法之精妙的十个知识点(装B语法)
Jan 18 Python
Pandas时间序列基础详解(转换,索引,切片)
Feb 26 Python
Win10下用Anaconda安装TensorFlow(图文教程)
Jun 18 Python
python中取绝对值简单方法总结
Jul 24 Python
Django创建一个后台的基本步骤记录
Oct 02 Python
详解Python中如何将数据存储为json格式的文件
Nov 18 Python
Python 数据结构之十大经典排序算法一文通关
Oct 16 Python
基于python批量处理dat文件及科学计算方法详解
May 08 #Python
使用Python通过win32 COM实现Word文档的写入与保存方法
May 08 #Python
Ubuntu下使用python读取doc和docx文档的内容方法
May 08 #Python
儿童编程python入门
May 08 #Python
解决python大批量读写.doc文件的问题
May 08 #Python
python在每个字符后添加空格的实例
May 07 #Python
Pycharm在创建py文件时,自动添加文件头注释的实例
May 07 #Python
You might like
php中的比较运算符详解
2013/10/28 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
2015/06/17 PHP
PHP封装CURL扩展类实例
2015/07/28 PHP
Avengerls vs Newbee BO3 第一场2.18
2021/03/10 DOTA
jquery点击页面任何区域实现鼠标焦点十字效果
2013/06/21 Javascript
js 处理数组重复元素示例代码
2013/12/27 Javascript
二叉树的非递归后序遍历算法实例详解
2014/02/07 Javascript
js使用Array.prototype.sort()对数组对象排序的方法
2015/01/28 Javascript
jQuery+php实时获取及响应文本框输入内容的方法
2016/05/24 Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
2017/10/21 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
[02:33]2018DOTA2亚洲邀请赛赛前采访——LGD
2018/04/04 DOTA
[03:04]2018年国际邀请赛典藏宝瓶&莱恩声望物品展示 片尾有彩蛋
2018/06/04 DOTA
[01:14:55]EG vs Spirit Supermajor 败者组 BO3 第三场 6.4
2018/06/05 DOTA
python通过ftplib登录到ftp服务器的方法
2015/05/08 Python
Python黑魔法Descriptor描述符的实例解析
2016/06/02 Python
Python AES加密模块用法分析
2017/05/22 Python
python实现日常记账本小程序
2018/03/10 Python
python requests 库请求带有文件参数的接口实例
2019/01/03 Python
Python实现的排列组合、破解密码算法示例
2019/04/12 Python
解决springboot yml配置 logging.level 报错问题
2020/02/21 Python
使用Python实现将多表分批次从数据库导出到Excel
2020/05/15 Python
基于Python的图像阈值化分割(迭代法)
2020/11/20 Python
详解基于 Canvas 手撸一个六边形能力图
2019/09/02 HTML / CSS
伯利陶器:Burleigh Pottery
2018/01/03 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
花卉与景观设计系大学生求职信
2013/10/01 职场文书
《在山的那边》教学反思
2014/02/23 职场文书
南京导游词
2015/02/03 职场文书
办公室主任岗位竞聘书
2015/09/15 职场文书
2016年教师节感言
2015/12/09 职场文书
中学生打架检讨书之500字
2019/08/06 职场文书
导游词之太原天龙山
2020/01/02 职场文书
Promise面试题详解之控制并发
2021/05/14 面试题
Pandas自定义选项option设置
2021/07/25 Python
bat批处理之字符串操作的实现
2022/03/16 Python