用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实现控制台输入密码的方法
May 29 Python
Python实现矩阵转置的方法分析
Nov 24 Python
Python爬虫常用小技巧之设置代理IP
Sep 13 Python
python实现RabbitMQ的消息队列的示例代码
Nov 08 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
Python Django切换MySQL数据库实例详解
Jul 16 Python
pandas中遍历dataframe的每一个元素的实现
Oct 23 Python
Django 实现外键去除自动添加的后缀‘_id’
Nov 15 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
python 多进程和协程配合使用写入数据
Oct 30 Python
Python request post上传文件常见要点
Nov 20 Python
Python自动化测试基础必备知识点总结
Feb 07 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环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
解决GD中文乱码问题
2007/02/14 PHP
PHP大批量插入数据库的3种方法和速度对比
2014/07/08 PHP
10条php编程小技巧
2015/07/07 PHP
js中字符替换函数String.replace()使用技巧
2011/08/14 Javascript
JavaScript与DOM组合动态创建表格实例
2012/12/23 Javascript
自己写了一个展开和收起的多更能型的js效果
2013/03/05 Javascript
jquery的ajax请求全面了解
2013/03/20 Javascript
javascript实现div的显示和隐藏的小例子
2013/06/25 Javascript
jquery滚动条插件jScrollPane的使用介绍
2013/11/08 Javascript
js实现仿QQ秀换装效果的方法
2015/03/04 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
jQuery学习笔记之入门
2016/12/14 Javascript
详解JavaScript中this的指向问题
2017/01/20 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
echarts学习笔记之图表自适应问题详解
2017/11/22 Javascript
js+css实现打字效果
2020/06/24 Javascript
vue组件与复用详解
2018/04/08 Javascript
JS判断两个数组或对象是否相同的方法示例
2019/02/28 Javascript
vue实现搜索功能
2019/05/28 Javascript
Vue源码分析之Vue实例初始化详解
2019/08/25 Javascript
JavaScript this在函数中的指向及实例详解
2019/10/14 Javascript
最全vue的vue-amap使用高德地图插件画多边形范围的示例代码
2020/07/17 Javascript
[47:53]DOTA2上海特级锦标赛主赛事日 - 1 败者组第一轮#2COL VS Spirit
2016/03/02 DOTA
[10:14]2018DOTA2国际邀请赛寻真——paiN Gaming不仅为自己而战
2018/08/14 DOTA
Python FTP操作类代码分享
2014/05/13 Python
python使用turtle库绘制树
2018/06/25 Python
windows10下安装TensorFlow Object Detection API的步骤
2019/06/13 Python
python中元组的用法整理
2020/06/15 Python
BeautifulSoup获取指定class样式的div的实现
2020/12/07 Python
日本网路线上商品代购服务:转送JAPAN
2016/08/05 全球购物
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
办公室打字员岗位职责
2014/04/16 职场文书
离婚协议书的书写要求
2014/09/17 职场文书
认真学习保证书
2015/02/26 职场文书
Django操作cookie的实现
2021/05/26 Python