用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入门教程之识别验证码
Mar 04 Python
解决出现Incorrect integer value: '' for column 'id' at row 1的问题
Oct 29 Python
Python socket实现的简单通信功能示例
Aug 21 Python
Python小工具之消耗系统指定大小内存的方法
Dec 03 Python
python plotly画柱状图代码实例
Dec 13 Python
django商品分类及商品数据建模实例详解
Jan 03 Python
python enumerate内置函数用法总结
Jan 07 Python
python3光学字符识别模块tesserocr与pytesseract的使用详解
Feb 26 Python
python不到50行代码完成了多张excel合并的实现示例
May 28 Python
可视化pytorch 模型中不同BN层的running mean曲线实例
Jun 24 Python
详解Python GUI编程之PyQt5入门到实战
Dec 10 Python
MATLAB 全景图切割及盒图显示的实现步骤
May 14 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数组一对一替换实现代码
2012/08/31 PHP
thinkPHP5框架导出Excel文件简单操作示例
2018/08/03 PHP
jQuery入门问答 整理的几个常见的初学者问题
2010/02/22 Javascript
jQuery实现可收缩展开的级联菜单实例代码
2013/11/27 Javascript
AngularJS基础知识笔记之表格
2015/05/10 Javascript
JS动态改变浏览器标题的方法
2016/04/06 Javascript
javascript实现下雪效果【实例代码】
2016/05/03 Javascript
JavaScript SHA1加密算法实现详细代码
2016/10/06 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
使用express搭建一个简单的查询服务器的方法
2018/02/09 Javascript
vue.js根据代码运行环境选择baseurl的方法
2018/02/28 Javascript
浅谈angular4.0中路由传递参数、获取参数最nice的写法
2018/03/12 Javascript
Vue 项目代理设置的优化
2018/04/17 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
Nodejs实现的操作MongoDB数据库功能完整示例
2019/02/02 NodeJs
微信小程序把百度地图坐标转换成腾讯地图坐标过程详解
2019/07/10 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
2019/11/05 Javascript
浅谈vue使用axios的回调函数中this不指向vue实例,为undefined
2020/09/21 Javascript
[01:07:20]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第二场 2月2日
2021/03/11 DOTA
Python制作刷网页流量工具
2017/04/23 Python
Python Pexpect库的简单使用方法
2019/01/29 Python
python实现维吉尼亚算法
2019/03/20 Python
python 画二维、三维点之间的线段实现方法
2019/07/07 Python
django如何实现视图重定向
2019/07/24 Python
Python迭代器Iterable判断方法解析
2020/03/16 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
如何开发一个JQuery插件
2016/07/28 面试题
巡警年度自我鉴定
2014/02/21 职场文书
我的梦中国梦演讲稿
2014/04/23 职场文书
税务干部群众路线教育实践活动对照检查材料
2014/09/20 职场文书
医生辞职信范文
2015/03/02 职场文书
作息时间调整通知
2015/04/22 职场文书
党员证明信
2015/06/19 职场文书
中学生国庆节演讲稿2015
2015/07/30 职场文书
oracle表分区的概念及操作
2021/04/24 Oracle
Go并发4种方法简明讲解
2022/04/06 Golang