Python读写docx文件的方法


Posted in Python onMay 08, 2018

Python读写word文档有现成的库可以处理。我这里采用 python-docx。可以用pip install python-docx安装一下。

这里说一句,ppt和excel也有类似的库哦,而且是直接读取文件里面的xml数据。所以doc格式得另找其他库处理,doc格式不是基于xml的。

帮助文档:http://python-docx.readthedocs.org/en/latest/

1、新建或打开文件。这个比较简单用docx的Document类,若指定路径则是打开文档;若没有指定路径则是新建文档

#coding:utf-8
import docx
 
#新建文档
doc_new = docx.Document()
 
#读取文档
doc = docx.Document(ur'C:\1.docx')

2、保存文件。有打开,就有保存。用Document类的save方法,其中参数是保存的文件路径,或者要保存的文件流。一般指定路径即可。

doc.save(path_or_stream)

3、对象集合。python-docx包含了word文档的相关对象集合。

doc.paragraphs #段落集合
doc.tables #表格集合
doc.sections #节 集合
doc.styles #样式集合
doc.inline_shapes #内置图形 等等...

4、插入段落。段落是word最基本的对象之一。

doc.add_paragraph(u'第一段',style=None) #插入一个段落,文本为“第一段”
#默认是不应用样式,这里也可以不写style参数,或者指定一个段落样式
doc.add_paragraph(u'第二段',style='Heading 2')
 
#这些样式都是word默认带有的样式,可以直接罗列出来有哪些段落样式
print [s.name for s in doc.styles if s.type==1]

5、新增样式。这个帮助文档里面说得不仔细,而且还是英文的。我手头上的项目用到这个,就自己琢磨出怎么使用,如下。

#coding:utf-8
from docx import Document
from docx.shared import RGBColor #这个是docx的颜色类
 
#新建文档
doc = Document()
 
#新增样式(第一个参数是样式名称,第二个参数是样式类型:1代表段落;2代表字符;3代表表格)
style = doc.styles.add_style('style name 1', 2)
 
#设置具体样式(修改样式字体为蓝色,当然还可以修改其他的,大家自己尝试)
style.font.color.rgb = RGBColor(0x0, 0x0, 0xff)

6、应用字符样式。字符自然是在段落里面的,可以采用下面方法给段落追加文字和设置字符样式。

#插入一个空白段落
p = doc.add_paragraph('')
p.add_run('123', style="Heading 1 Char")
p.add_run('456')
p.add_run('789', style="Heading 2 Char")
 
#这样一个段落就应用了两个字符样式,中间“456”就没应用样式
print p.text #输出结果是u'123456789' 也还是连续的

7、设置字体。当然可以不用通过设置样式对某些字进行设置,也可以直接设置。

p = doc.add_paragraph('')
r = p.add_run('123')
r.font.bold = True #加粗
r.font.italic = True #倾斜 等等...

8、表格操作。表格也是经常用到的一种对象类型。

#新建一个2x3的表格,style可以不写
table=doc.add_table(rows=2,cols=3,style=None)
 
#可以用table 的rows和columns得到这个表格的行数和列数
print len(table.rows)
print len(table.columns)
 
#遍历表格
for row in table.rows:
 row.cells[0].text = '1'
 #print row.cells[0].text
 
#新增行或列
table.add_row()
table.add_column()

Word常见操作差不多就是这些。大家可以查看帮助文档,也可以用dir和help查看对象的方法属性和帮助。

以上这篇Python读写docx文件的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python下函数参数的传递(参数带星号的说明)
Sep 19 Python
python和shell实现的校验IP地址合法性脚本分享
Oct 23 Python
Python中time模块和datetime模块的用法示例
Feb 28 Python
python的文件操作方法汇总
Nov 10 Python
python八大排序算法速度实例对比
Dec 06 Python
python中的二维列表实例详解
Jun 19 Python
pymongo中group by的操作方法教程
Mar 22 Python
python实现大学人员管理系统
Oct 25 Python
python/Matplotlib绘制复变函数图像教程
Nov 21 Python
Python3 元组tuple入门基础
Feb 09 Python
python使用paramiko实现ssh的功能详解
Mar 06 Python
解决Pycharm 运行后没有输出的问题
Feb 05 Python
python docx 中文字体设置的操作方法
May 08 #Python
Python解析并读取PDF文件内容的方法
May 08 #Python
python-docx修改已存在的Word文档的表格的字体格式方法
May 08 #Python
对Python中gensim库word2vec的使用详解
May 08 #Python
用python处理MS Word的实例讲解
May 08 #Python
基于python批量处理dat文件及科学计算方法详解
May 08 #Python
使用Python通过win32 COM实现Word文档的写入与保存方法
May 08 #Python
You might like
一些使用频率比较高的php函数
2008/10/03 PHP
PHP 加密/解密函数 dencrypt(动态密文,带压缩功能,支持中文)
2009/01/30 PHP
分享最受欢迎的5款PHP框架
2014/11/27 PHP
php微信开发之关键词回复功能
2018/06/13 PHP
PHP实现笛卡尔积算法的实例讲解
2019/12/22 PHP
用javascript实现的图片马赛克后显示并切换加文字功能
2007/04/21 Javascript
js 日期转换成中文格式的函数
2009/07/07 Javascript
jquery 添加节点的几种方法介绍
2013/09/04 Javascript
JQuery表单验证插件EasyValidator用法分析
2014/11/15 Javascript
javascript实现的图片切割多块效果实例
2015/05/07 Javascript
Vue2.x中的父子组件相互通信的实现方法
2017/05/02 Javascript
jQuery+ajax实现局部刷新的两种方法
2017/06/08 jQuery
vue组件中的样式属性scoped实例详解
2018/10/30 Javascript
JS大坑之19位数的Number型精度丢失问题详解
2019/04/22 Javascript
JS异步处理的进化史深入讲解
2019/08/25 Javascript
[08:07]DOTA2每周TOP10 精彩击杀集锦vol.8
2014/06/25 DOTA
python定时检查某个进程是否已经关闭的方法
2015/05/20 Python
Django发送html邮件的方法
2015/05/26 Python
对python多线程SSH登录并发脚本详解
2019/02/14 Python
Python机器学习算法库scikit-learn学习之决策树实现方法详解
2019/07/04 Python
python实现上传文件到linux指定目录的方法
2020/01/03 Python
Python爬虫之Selenium警告框(弹窗)处理
2020/12/04 Python
印度婴儿用品在线商店:Firstcry.com
2016/12/05 全球购物
HTC VIVE美国官网:VR虚拟现实眼镜
2018/02/13 全球购物
Linux操作面试题
2015/02/11 面试题
留学推荐信怎么写
2014/01/25 职场文书
面试后的英文感谢信
2014/02/01 职场文书
环境日宣传活动总结
2014/07/09 职场文书
人力资源管理求职信
2014/08/07 职场文书
学习计划书怎么写
2014/09/15 职场文书
一份关于丢失公司财物的检讨书
2014/09/19 职场文书
兵马俑导游词
2015/02/02 职场文书
无工作证明怎么写
2015/06/15 职场文书
公司宣传语大全
2015/07/13 职场文书
股东协议书范本2016
2016/03/21 职场文书
记一次Mysql不走日期字段索引的原因小结
2021/10/24 MySQL