用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的Flask框架实现视频的流媒体传输
Mar 31 Python
详解Python中break语句的用法
May 14 Python
深入讲解Python中面向对象编程的相关知识
May 25 Python
使用Python神器对付12306变态验证码
Jan 05 Python
Python解析最简单的验证码
Jan 07 Python
浅谈pyhton学习中出现的各种问题(新手必看)
May 17 Python
详解python单元测试框架unittest
Jul 02 Python
利用python和ffmpeg 批量将其他图片转换为.yuv格式的方法
Jan 08 Python
python读取有密码的zip压缩文件实例
Feb 08 Python
pycharm全局搜索的具体步骤
Jul 28 Python
python cookie反爬处理的实现
Nov 01 Python
基于python模拟TCP3次握手连接及发送数据
Nov 06 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笔记之:AOP的应用
2013/04/24 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
2016/12/25 PHP
WHOOPS PHP调试库的使用
2017/09/29 PHP
PHP接口继承及接口多继承原理与实现方法详解
2017/10/18 PHP
Auntion-TableSort国人写的一个javascript表格排序的东西
2007/11/12 Javascript
jQuery插件-jRating评分插件源码分析及使用方法
2012/12/28 Javascript
删除select中所有option选项jquery代码
2013/08/12 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
2014/05/12 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
EasyUI中combobox默认值注意事项
2015/03/01 Javascript
javascript中的深复制详解及实例分析
2016/12/29 Javascript
jQuery实现鼠标悬停3d菜单展开动画效果
2017/01/19 Javascript
AngularJS实现使用路由切换视图的方法
2017/01/24 Javascript
Vue组件开发初探
2017/02/14 Javascript
AngularJS表单验证功能分析
2017/05/26 Javascript
vue单页面应用打开新窗口显示跳转页面的实例
2018/09/21 Javascript
JS获取月的第几周和年的第几周实例代码
2018/12/05 Javascript
es6函数之尾递归用法实例分析
2020/04/25 Javascript
vue 组件之间事件触发($emit)与event Bus($on)的用法说明
2020/07/28 Javascript
JS中锚点链接点击平滑滚动并自由调整到顶部位置
2021/02/06 Javascript
python查看微信好友是否删除自己
2016/12/19 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
python互斥锁、加锁、同步机制、异步通信知识总结
2018/02/11 Python
使用pandas批量处理矢量化字符串的实例讲解
2018/07/10 Python
计算机二级python学习教程(3) python语言基本数据类型
2019/05/16 Python
Python如何读取、写入JSON数据
2020/07/28 Python
详解用selenium来下载小姐姐图片并保存
2021/01/26 Python
利用CSS3制作简单的3d半透明立方体图片展示
2017/03/25 HTML / CSS
阿巴庭院:Abba Patio
2019/06/18 全球购物
外企办公室竞聘演讲稿
2013/12/29 职场文书
应聘教师自荐书
2014/06/16 职场文书
机械工程师岗位职责
2014/06/16 职场文书
小学生迎国庆演讲稿
2014/09/05 职场文书
2015会计试用期工作总结
2014/12/12 职场文书
2015年营业员工作总结
2015/04/23 职场文书
教你怎么用Python实现多路径迷宫
2021/04/29 Python