用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输出当前目录下index.html文件路径的方法
Apr 28 Python
用Python解决计数原理问题的方法
Aug 04 Python
Python编程给numpy矩阵添加一列方法示例
Dec 04 Python
浅谈用VSCode写python的正确姿势
Dec 16 Python
Tensorflow 查看变量的值方法
Jun 14 Python
Tornado Web Server框架编写简易Python服务器
Jul 28 Python
Numpy截取指定范围内的数据方法
Nov 14 Python
对python numpy.array插入一行或一列的方法详解
Jan 29 Python
Python2.7实现多进程下开发多线程示例
May 31 Python
Pandas之DataFrame对象的列和索引之间的转化
Jun 25 Python
Python定时任务工具之APScheduler使用方式
Jul 24 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 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
怎么使 Mysql 数据同步
2006/10/09 PHP
PHP Session变量不能传送到下一页的解决方法
2009/11/27 PHP
php 对输入信息的进行安全过滤的函数代码
2012/06/29 PHP
解决php使用异步调用获取数据时出现(错误c00ce56e导致此项操作无法完成)
2013/07/03 PHP
PHP中数组定义的几种方法
2013/09/01 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
PHP获取路径和目录的方法总结【必看篇】
2017/03/04 PHP
Locate a File Using a File Open Dialog Box
2007/06/18 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
jQuery选择器全面总结
2014/01/06 Javascript
Jquery 实现table样式的设定
2015/01/28 Javascript
jQuery图片渐变特效的简单实现
2016/06/25 Javascript
使用jQuery加载html页面到指定的div实现方法
2016/07/13 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
Vue 2.0在IE11中打开项目页面空白的问题解决
2017/07/16 Javascript
vue单页缓存方案分析及实现
2018/09/25 Javascript
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
python爬虫入门教程--优雅的HTTP库requests(二)
2017/05/25 Python
在python中bool函数的取值方法
2018/11/01 Python
Django web框架使用url path name详解
2019/04/29 Python
Python编程中类与类的关系详解
2019/08/08 Python
pytorch 实现删除tensor中的指定行列
2020/01/13 Python
tensorflow入门:TFRecordDataset变长数据的batch读取详解
2020/01/20 Python
纯CSS3实现表单验证效果(非常不错)
2017/01/18 HTML / CSS
HTML5 progress和meter控件_动力节点Java学院整理
2017/07/06 HTML / CSS
加拿大最大的书店:Indigo
2017/01/01 全球购物
小学教育毕业生自荐信
2013/11/18 职场文书
酒店公关部经理岗位职责
2013/11/24 职场文书
考试不及格检讨书
2014/01/09 职场文书
上班上网检讨书
2014/01/29 职场文书
初中生自我鉴定
2014/02/04 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
聚众斗殴罪辩护词
2015/05/21 职场文书
民间借贷纠纷案件代理词
2015/05/26 职场文书
提档介绍信范文
2015/10/22 职场文书
Ruby处理YAML和json数据
2022/04/18 Ruby