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 continue语句用法实例
Mar 11 Python
python通过zlib实现压缩与解压字符串的方法
Nov 19 Python
详细探究Python中的字典容器
Apr 14 Python
用Python编写web API的教程
Apr 30 Python
python中字符串前面加r的作用
Jun 04 Python
基于循环神经网络(RNN)实现影评情感分类
Mar 26 Python
pandas 时间格式转换的实现
Jul 06 Python
OpenCV 边缘检测
Jul 10 Python
python实现跨excel sheet复制代码实例
Mar 03 Python
Python使用Numpy模块读取文件并绘制图片
May 13 Python
只用20行Python代码实现屏幕录制功能
Jun 02 Python
详解OpenCV曝光融合
Apr 29 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连接MySQL进行增、删、改、查操作
2017/02/19 PHP
Laravel框架自定义验证过程实例分析
2019/02/01 PHP
屏蔽鼠标右键、Ctrl+n、shift+F10、F5刷新、退格键 的javascript代码
2007/04/01 Javascript
Javascript读取cookie函数代码
2010/10/16 Javascript
jQuery EasyUI API 中文文档 - TreeGrid 树表格使用介绍
2011/11/21 Javascript
判断多个input type=file是否有已经选择好文件的代码
2012/05/23 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
js数组方法扩展实现数组统计函数
2014/04/09 Javascript
javascript面向对象程序设计(一)
2015/01/29 Javascript
微信小程序 picker-view 组件详解及简单实例
2017/01/10 Javascript
ionic+AngularJs实现获取验证码倒计时按钮
2017/04/22 Javascript
vue+vuex+axios实现登录、注册页权限拦截
2018/03/09 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
webpack多入口多出口的实现方法
2018/08/17 Javascript
vuedraggable+element ui实现页面控件拖拽排序效果
2020/07/29 Javascript
jQuery+ajax实现批量删除功能完整示例
2019/06/06 jQuery
js实现弹幕墙效果
2020/12/10 Javascript
Python实现的人工神经网络算法示例【基于反向传播算法】
2017/11/11 Python
python之验证码生成(gvcode与captcha)
2019/01/02 Python
python占位符输入方式实例
2019/05/27 Python
用vue.js组件模拟v-model指令实例方法
2019/07/05 Python
浅谈django url请求与数据库连接池的共享问题
2019/08/29 Python
Python zip函数打包元素实例解析
2019/12/11 Python
在keras下实现多个模型的融合方式
2020/05/23 Python
Python urllib2运行过程原理解析
2020/06/04 Python
耐克奥地利官网:Nike奥地利
2019/08/16 全球购物
一套中级Java程序员笔试题
2015/01/14 面试题
生日宴会主持词
2014/03/20 职场文书
经销商订货会主持词
2014/03/27 职场文书
Oracle笔记
2021/04/05 Oracle
使用Django实现商城验证码模块的方法
2021/06/01 Python
python 爬取天气网卫星图片
2021/06/07 Python
新手入门Mysql--sql执行过程
2021/06/20 MySQL
详细聊聊MySQL中慢SQL优化的方向
2021/08/30 MySQL
mysql使用 not int 子查询隐含陷阱
2022/04/12 MySQL
MySQL的意向共享锁、意向排它锁和死锁
2022/07/15 MySQL