用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黑魔法之参数传递
Feb 12 Python
python实现数据图表
Jul 29 Python
快速查询Python文档方法分享
Dec 27 Python
Python+selenium 获取浏览器窗口坐标、句柄的方法
Oct 14 Python
python之Flask实现简单登录功能的示例代码
Dec 24 Python
python3实现逐字输出的方法
Jan 23 Python
对dataframe数据之间求补集的实例详解
Jan 30 Python
浅析python的Lambda表达式
Feb 27 Python
Django框架模板语言实例小结【变量,标签,过滤器,继承,html转义】
May 23 Python
python实现两个dict合并与计算操作示例
Jul 01 Python
Python pandas RFM模型应用实例详解
Nov 20 Python
使用Python开发个京东上抢口罩的小实例(仅作技术研究学习使用)
Mar 10 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分页示例分享
2014/04/30 PHP
PHP实现加密文本文件并限制特定页面的存取的效果
2016/10/21 PHP
PHP使用递归算法无限遍历数组示例
2017/01/13 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
PHP封装的简单连接MongoDB类示例
2019/02/13 PHP
PHP如何开启Opcache功能提升程序处理效率
2020/04/27 PHP
HTML node相关的一些资料整理
2010/01/01 Javascript
JQuery each()函数如何优化循环DOM结构的性能
2012/12/10 Javascript
jQuery 追加元素的方法如append、prepend、before
2014/01/16 Javascript
分享20款美化网站的 jQuery Lightbox 灯箱插件
2014/10/10 Javascript
js 基础篇必看(点击事件轮播图的简单实现)
2016/08/20 Javascript
js 作用域和变量详解
2017/02/16 Javascript
Vue2单一事件管理组件通信
2017/05/09 Javascript
使用Node.js写一个代码生成器的方法步骤
2019/05/10 Javascript
[03:42]2014DOTA2国际邀请赛 第三日比赛排位扑朔迷离
2014/07/12 DOTA
python3新特性函数注释Function Annotations用法分析
2016/07/28 Python
PyQt5每天必学之带有标签的复选框
2018/04/19 Python
python在OpenCV里实现投影变换效果
2019/08/30 Python
python爬取Ajax动态加载网页过程解析
2019/09/05 Python
Django用户登录与注册系统的实现示例
2020/06/03 Python
为什么说python更适合树莓派编程
2020/07/20 Python
美国顶级户外凉鞋品牌:Chacos
2017/03/27 全球购物
Homestay中文官网:全球寄宿家庭
2018/10/18 全球购物
枚举与#define宏的区别
2014/04/30 面试题
自荐信格式简述
2014/01/25 职场文书
结婚喜宴主持词
2014/03/14 职场文书
经贸专业毕业生求职信
2014/03/23 职场文书
《和田的维吾尔》教学反思
2014/04/14 职场文书
通信工程专业求职信
2014/06/04 职场文书
MySQL中InnoDB存储引擎的锁的基本使用教程
2021/05/26 MySQL
Java Dubbo框架知识点梳理
2021/06/26 Java/Android
MySQL常见优化方案汇总
2022/01/18 MySQL
Python Pandas 删除列操作
2022/03/16 Python
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers
解决Springboot PostMapping无法获取数据的问题
2022/05/06 Java/Android