用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中pygal绘制雷达图代码分享
Dec 07 Python
python编写朴素贝叶斯用于文本分类
Dec 21 Python
Python爬虫通过替换http request header来欺骗浏览器实现登录功能
Jan 07 Python
Python使用爬虫抓取美女图片并保存到本地的方法【测试可用】
Aug 30 Python
Python实现的拉格朗日插值法示例
Jan 08 Python
浅谈Pycharm中的Python Console与Terminal
Jan 17 Python
pyqt5 tablewidget 利用线程动态刷新数据的方法
Jun 17 Python
Python为何不能用可变对象作为默认参数的值
Jul 01 Python
Python reques接口测试框架实现代码
Jul 28 Python
去除python中的字符串空格的简单方法
Dec 22 Python
Autopep8的使用(python自动编排工具)
Mar 02 Python
python playwright 自动等待和断言详解
Nov 27 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 Zip压缩 在线对文件进行压缩的函数
2010/05/26 PHP
php高级编程-函数-郑阿奇
2011/07/04 PHP
微信公众号判断用户是否已关注php代码解析
2016/06/24 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
PHP join()函数用法与实例讲解
2019/03/11 PHP
PHP实现Snowflake生成分布式唯一ID的方法示例
2020/08/30 PHP
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
6款经典实用的jQuery小插件及源码(对话框/提示工具等等)
2013/02/04 Javascript
javascript打开word文档的方法
2014/04/16 Javascript
JavaScript数组实现数据结构中的队列与堆栈
2016/05/26 Javascript
微信小程序 slider 详解及实例代码
2017/01/10 Javascript
JavaScript计时器用法分析【setTimeout和clearTimeout】
2017/01/18 Javascript
jQuery手风琴的简单制作
2017/05/12 jQuery
在vue中使用echars实现上浮与下钻效果
2019/11/08 Javascript
浅谈Webpack4 Tree Shaking 终极优化指南
2019/11/18 Javascript
vue-router 路由传参用法实例分析
2020/03/06 Javascript
jQuery实现简单QQ聊天框
2020/08/27 jQuery
[01:01:29]2018DOTA2亚洲邀请赛 4.4 淘汰赛 VP vs Liquid 第一场
2018/04/05 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
浅谈python函数之作用域(python3.5)
2017/10/27 Python
pandas 读取各种格式文件的方法
2018/06/22 Python
使用python3实现操作串口详解
2019/01/01 Python
让你Python到很爽的加速递归函数的装饰器
2019/05/26 Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
2019/06/21 Python
python cv2在验证码识别中应用实例解析
2019/12/25 Python
Python接口测试get请求过程详解
2020/02/28 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
基于python实现简单C/S模式代码实例
2020/09/14 Python
Python调用REST API接口的几种方式汇总
2020/10/19 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
阿迪达斯中国官网:Adidas中国
2020/12/14 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
什么是符号链接,什么是硬链接?符号链接与硬链接的区别是什么?
2013/05/03 面试题
2014年党支部学习材料
2014/05/19 职场文书
SpringBoot整合MongoDB的实现步骤
2021/06/23 MongoDB