用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中在for循环中嵌套使用if和else语句的技巧
Jun 20 Python
Python中的字符串查找操作方法总结
Jun 27 Python
python3设计模式之简单工厂模式
Oct 17 Python
Python开发网站目录扫描器的实现
Feb 21 Python
Django框架实现的分页demo示例
May 25 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
Jun 18 Python
python读取并写入mat文件的方法
Jul 12 Python
django中media媒体路径设置的步骤
Nov 15 Python
使用Python paramiko模块利用多线程实现ssh并发执行操作
Dec 05 Python
python mock测试的示例
Oct 19 Python
如何获取numpy array前N个最大值
May 14 Python
教你怎么用python实现字符串转日期
May 24 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
wampserver改变默认网站目录的办法
2015/08/05 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
javascript 构建一个xmlhttp对象池合理创建和使用xmlhttp对象
2010/01/15 Javascript
JavaScript 一行代码,轻松搞定浮动快捷留言-V2升级版
2010/04/02 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
简单时间提示DEMO从0开始一直进行计时
2013/11/19 Javascript
javascript 实现map集合
2015/04/03 Javascript
javascript引用类型指针的工作方式
2015/04/13 Javascript
jQuery实现信息提示框(带有圆角框与动画)效果
2015/08/07 Javascript
JavaScript计算器网页版实现代码分享
2016/07/15 Javascript
jquery结合html实现中英文页面切换
2016/11/29 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
vue.js实现含搜索的多种复选框(附源码)
2017/03/23 Javascript
JavaScript 程序错误Cannot use 'in' operator to search的解决方法
2017/07/10 Javascript
JavaScript实现的文本框placeholder提示文字功能示例
2018/07/25 Javascript
vue.js template模板的使用(仿饿了么布局)
2018/08/13 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
详解vue-property-decorator使用手册
2019/07/29 Javascript
layui-select动态选中值的例子
2019/09/23 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
Vue中this.$nextTick的作用及用法
2020/02/04 Javascript
javascript设计模式 ? 单例模式原理与应用实例分析
2020/04/09 Javascript
使用python实现递归版汉诺塔示例(汉诺塔递归算法)
2014/04/08 Python
python中base64加密解密方法实例分析
2015/05/16 Python
python3.4控制用户输入与输出的方法
2018/10/17 Python
CSS3制作半透明边框(Facebox)类似渐变
2012/12/09 HTML / CSS
css3 仿写阿里云水纹效果的示例代码
2018/02/10 HTML / CSS
美国演唱会订票网站:Ticketmaster美国
2017/10/05 全球购物
美国高端牛仔品牌:Silver Jeans
2019/12/12 全球购物
MAC彩妆澳洲官网:M·A·C AU
2021/01/17 全球购物
演讲稿祖国在我心中
2014/05/04 职场文书
基层干部群众路线教育实践活动个人对照检查材料
2014/09/23 职场文书
学前班学生评语
2014/12/29 职场文书
入党团支部推荐意见
2015/06/02 职场文书
Python使用PyYAML库读写yaml文件的方法
2022/04/06 Python