Python读写Excel文件方法介绍


Posted in Python onNovember 22, 2014

一、读取excel

这里介绍一个不错的包xlrs,可以工作在任何平台。这也就意味着你可以在Linux下读取Excel文件。

首先,打开workbook;

import xlrd

wb = xlrd.open_workbook('myworkbook.xls')

检查表单名字:

wb.sheet_names()

得到第一张表单,两种方式:索引和名字   
sh = wb.sheet_by_index(0)

sh = wb.sheet_by_name(u'Sheet1')

递归打印出每行的信息:  
for rownum in range(sh.nrows):

    print sh.row_values(rownum)

如果只想返回第一列数据:
first_column = sh.col_values(0)

[code]

通过索引读取数据:

[code]

cell_A1 =  sh.cell(0,0).value

cell_C4 = sh.cell(rowx=3,colx=2).value

注意:这里的索引都是从0开始的。

二、写excel

这里介绍一个不错的包xlwt,可以工作在任何平台。这也就意味着你可以在Linux下保存Excel文件。

基本部分

在写入Excel表格之前,你必须初始化workbook对象,然后添加一个workbook对象。比如:

import xlwt

wbk = xlwt.Workbook()

sheet = wbk.add_sheet('sheet 1')

这样表单就被创建了,写入数据也很简单:

# indexing is zero based, row then column

sheet.write(0,1,'test text')

之后,就可以保存文件(这里不需要想打开文件一样需要close文件):

wbk.save('test.xls')

深入探索

worksheet对象,当你更改表单内容的时候,会有警告提示。

sheet.write(0,0,'test')

sheet.write(0,0,'oops')

 

# returns error:

# Exception: Attempt to overwrite cell:

# sheetname=u'sheet 1' rowx=0 colx=0

解决方式:使用cell_overwrite_ok=True来创建worksheet:

sheet2 =  wbk.add_sheet('sheet 2', cell_overwrite_ok=True)

sheet2.write(0,0,'some text')

sheet2.write(0,0,'this should overwrite')

这样你就可以更改表单2的内容了。

更多:

# Initialize a style

style = xlwt.XFStyle()

 

# Create a font to use with the style

font = xlwt.Font()

font.name = 'Times New Roman'

font.bold = True

 

# Set the style's font to this new one you set up

style.font = font

 

# Use the style when writing

sheet.write(0, 0, 'some bold Times text', style)

xlwt 允许你每个格子或者整行地设置格式。还可以允许你添加链接以及公式。其实你可以阅读源代码,那里有很多例子:

    dates.py, 展示如何设置不同的数据格式
    hyperlinks.py, 展示如何创建超链接 (hint: you need to use a formula)
    merged.py, 展示如何合并格子
    row_styles.py, 展示如何应用Style到整行格子中.

三、修改excel

Python中一般使用xlrd(excel read)来读取Excel文件,使用xlwt(excel write)来生成Excel文件(可以控制Excel中单元格的格式),需要注意的是,用xlrd读 取excel是不能对其进行操作的:xlrd.open_workbook()方法返回xlrd.Book类型,是只读的,不能对其进行操作。而 xlwt.Workbook()返回的xlwt.Workbook类型的save(filepath)方法可以保存excel文件。

因此对于读取和生成Excel文件都非常容易处理,但是对于已经存在的Excel文件进行修改就比较麻烦了。不过,还有一个xlutils(依赖于xlrd和xlwt)提供复制excel文件内容和修改文件的功能。其实际也只是在xlrd.Book和xlwt.Workbook之间建立了一个管道而已,如下图:

xlutils.copy模块的copy()方法实现了这个功能,示例代码如下:

from xlrd import open_workbook

from xlutils.copy import copy

 

rb = open_workbook('m:\\1.xls')

#通过sheet_by_index()获取的sheet没有write()方法
rs = rb.sheet_by_index(0)

 

wb = copy(rb)
#通过get_sheet()获取的sheet有write()方法

ws = wb.get_sheet(0)

ws.write(0, 0, 'changed!')

 

wb.save('m:\\1.xls')

四、参考

http://pypi.python.org/pypi/xlrd
http://pypi.python.org/pypi/xlwt
http://pypi.python.org/pypi/xlutils

Python 相关文章推荐
Python中自定义函数的教程
Apr 27 Python
详解Swift中属性的声明与作用
Jun 30 Python
Python 基于Twisted框架的文件夹网络传输源码
Aug 28 Python
浅谈python中的数字类型与处理工具
Aug 02 Python
Python序列化基础知识(json/pickle)
Oct 19 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
Dec 12 Python
在python带权重的列表中随机取值的方法
Jan 23 Python
Python判断对象是否相等及eq函数的讲解
Feb 25 Python
python爬虫简单的添加代理进行访问的实现代码
Apr 04 Python
django-rest-framework 自定义swagger过程详解
Jul 18 Python
numpy np.newaxis 的实用分享
Nov 30 Python
解决Pycharm 运行后没有输出的问题
Feb 05 Python
Python中的包和模块实例
Nov 22 #Python
Python动态加载模块的3种方法
Nov 22 #Python
收集的几个Python小技巧分享
Nov 22 #Python
Python获取Windows或Linux主机名称通用函数分享
Nov 22 #Python
Python中使用glob和rmtree删除目录子目录及所有文件的例子
Nov 21 #Python
Python中使用SAX解析xml实例
Nov 21 #Python
python sort、sorted高级排序技巧
Nov 21 #Python
You might like
PHP 变量类型的强制转换
2009/10/23 PHP
smarty内置函数capture用法分析
2015/01/22 PHP
理解php依赖注入和控制反转
2016/05/11 PHP
PHP封装的数据库模型Model类完整示例【基于PDO】
2019/03/14 PHP
图片按比例缩放函数
2006/06/26 Javascript
javascript是怎么继承的介绍
2012/01/05 Javascript
jQuery获取CSS样式中的颜色值的问题,不同浏览器格式不同的解决办法
2013/05/13 Javascript
JS+JSP通过img标签调用实现静态页面访问次数统计的方法
2015/12/14 Javascript
jquery Deferred 快速解决异步回调的问题
2016/04/05 Javascript
node.js中module.exports与exports用法上的区别
2016/09/02 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
微信小程序  http请求封装详解及实例代码
2017/02/15 Javascript
Angular.JS中指令ng-if的注意事项小结
2017/06/21 Javascript
在Vue项目中使用d3.js的实例代码
2018/05/01 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
javascript实现考勤日历功能
2018/11/29 Javascript
jQuery实现html可联动的百分比进度条
2020/03/26 jQuery
vue+iview实现分页及查询功能
2020/11/17 Vue.js
JS removeAttribute()方法实现删除元素的某个属性
2021/01/11 Javascript
[02:48]DOTA2英雄基础教程 暗夜魔王
2013/12/12 DOTA
[11:33]DAC2018 4.5SOLO赛决赛 MidOne vs Paparazi第二场
2018/04/06 DOTA
利用Python的装饰器解决Bottle框架中用户验证问题
2015/04/24 Python
Python sys.argv用法实例
2015/05/28 Python
Python判断Abundant Number的方法
2015/06/15 Python
Python延时操作实现方法示例
2018/08/14 Python
python 批量解压压缩文件的实例代码
2019/06/27 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
浅谈关于html5中图片抛物线运动的一些心得
2018/01/09 HTML / CSS
澳大利亚墨尔本的在线时装店:LORETA
2018/09/14 全球购物
美国隐形眼镜网上商店:Lens.com
2019/09/03 全球购物
小学敬老月活动方案
2014/02/11 职场文书
放假通知怎么写
2015/08/18 职场文书
mybatis中注解与xml配置的对应关系和对比分析
2021/08/04 Java/Android
vue项目支付功能代码详解
2022/02/18 Vue.js
Mysql 8.x 创建用户以及授予权限的操作记录
2022/04/18 MySQL
vscode远程免密登入Linux服务器的配置方法
2022/06/28 Servers