用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来编写HTTP服务器的超级指南
Feb 18 Python
python 转换 Javascript %u 字符串为python unicode的代码
Sep 06 Python
python中子类调用父类函数的方法示例
Aug 18 Python
Python2实现的图片文本识别功能详解
Jul 11 Python
Python实现的批量修改文件后缀名操作示例
Dec 07 Python
Python 利用切片从列表中取出一部分使用的方法
Feb 01 Python
Python实现FM算法解析
Jun 18 Python
python mysql中in参数化说明
Jun 05 Python
无需压缩软件,用python帮你操作压缩包
Aug 17 Python
python里glob模块知识点总结
Jan 05 Python
提取视频中的音频 Python只需要三行代码!
May 10 Python
python中%格式表达式实例用法
Jun 18 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隐形一句话后门,和ThinkPHP框架加密码程序(base64_decode)
2011/11/02 PHP
php获取网卡的MAC地址支持WIN/LINUX系统
2014/04/30 PHP
dedecms集成财付通支付接口
2014/12/28 PHP
PHPWind9.0手动屏蔽验证码解决后台关闭验证码但是依然显示的问题
2016/08/12 PHP
php array_chunk()函数用法与注意事项
2019/07/12 PHP
js 浮动层菜单收藏
2009/01/16 Javascript
浅谈javascript中关于日期和时间的基础知识
2016/07/13 Javascript
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
yarn与npm的命令行小结
2016/10/20 Javascript
使用纯JS代码判断字符串中有多少汉字的实现方法(超简单实用)
2016/11/12 Javascript
jquery获取select,option所有的value和text的实例
2017/03/06 Javascript
JavaScript数据结构之二叉树的计数算法示例
2017/04/13 Javascript
详谈构造函数加括号与不加括号的区别
2017/10/26 Javascript
Taro集成Redux快速上手的方法示例
2018/06/21 Javascript
JavaScript设计模式之装饰者模式实例详解
2019/01/17 Javascript
node+vue实现文件上传功能
2020/05/28 Javascript
Vue初始化中的选项合并之initInternalComponent详解
2020/06/11 Javascript
解决VUE自定义拖拽指令时 onmouseup 与 click事件冲突问题
2020/07/24 Javascript
JS+css3实现幻灯片轮播图
2020/08/14 Javascript
Vue页面跳转传递参数及接收方式
2020/09/09 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
[54:28]EG vs OG 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/18 DOTA
跟老齐学Python之print详解
2014/09/28 Python
在Django的URLconf中进行函数导入的方法
2015/07/18 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
python删除字符串中指定字符的方法
2018/08/13 Python
CSS3+Sprite实现僵尸行走动画特效源码
2016/01/27 HTML / CSS
美国一家主打母婴用品的团购网站:zulily
2017/09/19 全球购物
迪卡侬中国官网:Decathlon中国
2020/08/10 全球购物
银行求职信个人范文
2013/12/16 职场文书
促销活动计划书
2014/05/02 职场文书
优秀团支部申报材料
2014/12/26 职场文书
高考诚信考试承诺书
2015/04/29 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书
Nginx配置Https安全认证的实现
2021/05/26 Servers