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 相关文章推荐
解决PyCharm中光标变粗的问题
Aug 05 Python
python将字符串list写入excel和txt的实例
Jul 20 Python
在Django admin中编辑ManyToManyField的实现方法
Aug 09 Python
python数据类型之间怎么转换技巧分享
Aug 20 Python
python如何从文件读取数据及解析
Sep 19 Python
pyautogui自动化控制鼠标和键盘操作的步骤
Apr 01 Python
Python文件时间操作步骤代码详解
Apr 13 Python
TensorFlow使用Graph的基本操作的实现
Apr 22 Python
Python正则表达式如何匹配中文
May 27 Python
Pycharm Available Package无法显示/安装包的问题Error Loading Package List解决
Sep 18 Python
Python+MySQL随机试卷及答案生成程序的示例代码
Feb 01 Python
python pandas 解析(读取、写入)CSV 文件的操作方法
Dec 24 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
PHPWind与Discuz截取字符函数substrs与cutstr性能比较
2011/12/05 PHP
PHP截断标题且兼容utf8和gb2312编码
2013/09/22 PHP
ThinkPHP使用PHPExcel实现Excel数据导入导出完整实例
2014/07/22 PHP
php实现扫描二维码根据浏览器类型访问不同下载地址
2014/10/15 PHP
微信公众平台开发关注及取消关注事件的方法
2014/12/23 PHP
Yii2框架中使用PHPExcel导出Excel文件的示例
2017/08/09 PHP
IE6背景图片不缓存问题解决方案及图片使用策略多个方法小结
2012/05/14 Javascript
基于jQuery的获取标签名的代码
2012/07/16 Javascript
jquery 插件学习(二)
2012/08/06 Javascript
javascript中的作用域和闭包详解
2016/01/13 Javascript
JQuery 设置checkbox值二次无效的解决方法
2016/07/22 Javascript
jQuery实现的简单拖拽功能示例
2016/09/13 Javascript
Javascript数组循环遍历之forEach详解
2016/11/07 Javascript
vue通过路由实现页面刷新的方法
2018/01/25 Javascript
Vue中全局变量的定义和使用
2019/06/05 Javascript
javascript实现5秒倒计时并跳转功能
2019/06/20 Javascript
解决mui框架中switch开关通过js控制开或者关状态时小圆点不动的问题
2019/09/03 Javascript
Vue使用v-viewer实现图片预览
2020/10/21 Javascript
[02:05:03]完美世界DOTA2联赛循环赛 LBZS VS Matador BO2 10.28
2020/10/28 DOTA
在Python中使用dict和set方法的教程
2015/04/27 Python
Python使用OpenCV进行标定
2018/05/08 Python
python检索特定内容的文本文件实例
2018/06/05 Python
python监控文件并且发送告警邮件
2018/06/21 Python
对pytorch网络层结构的数组化详解
2018/12/08 Python
巴西最大的家具及装饰用品店:Mobly
2017/10/11 全球购物
新加坡最佳婴儿用品店:Mamahood.com.sg
2018/08/26 全球购物
英国设计师珠宝网站:Joshua James Jewellery
2020/03/01 全球购物
C#面试常见问题
2013/02/25 面试题
工地门卫岗位职责
2013/12/30 职场文书
中介业务员岗位职责
2014/04/09 职场文书
人事经理岗位职责
2014/04/28 职场文书
商务邀请函
2015/01/30 职场文书
2015年党小组工作总结
2015/05/26 职场文书
2015年高中生国庆节演讲稿
2015/07/30 职场文书
礼貌问候语大全
2015/11/10 职场文书
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python