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中管道用法入门实例
Jun 04 Python
最大K个数问题的Python版解法总结
Jun 16 Python
Python入门_浅谈for循环、while循环
May 16 Python
Python实现的用户登录系统功能示例
Feb 05 Python
python: line=f.readlines()消除line中\n的方法
Mar 19 Python
20行python代码的入门级小游戏的详解
May 05 Python
python enumerate内置函数用法总结
Jan 07 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
Mar 02 Python
如何学习Python time模块
Jun 03 Python
浅谈Python爬虫原理与数据抓取
Jul 21 Python
详解python内置模块urllib
Sep 09 Python
python爬取豆瓣电影排行榜(requests)的示例代码
Feb 18 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页面运行时间的函数介绍
2013/07/01 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
PHP定时执行任务实现方法详解(Timer)
2015/07/30 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
Aster vs KG BO3 第二场2.18
2021/03/10 DOTA
jquery nth-child()选择器的简单应用
2010/07/10 Javascript
限制textbox或textarea输入字符长度的JS代码
2013/10/16 Javascript
jQuery获得页面元素的绝对/相对位置即绝对X,Y坐标
2014/03/06 Javascript
JS显示表格内指定行html代码的方法
2015/03/31 Javascript
js图片轮播手动切换效果
2015/11/10 Javascript
js中判断变量类型函数typeof的用法总结
2016/08/09 Javascript
Jquery鼠标放上去显示全名的实现方法
2017/02/06 Javascript
Layui给数据表格动态添加一行并跳转到添加行所在页的方法
2018/08/20 Javascript
jQuery点击页面其他部分隐藏下拉菜单功能
2018/11/27 jQuery
了解javascript中变量及函数的提升
2019/05/27 Javascript
详解vue项目中实现图片裁剪功能
2019/06/07 Javascript
微信小程序如何调用新闻接口实现列表循环
2019/07/02 Javascript
vue路由缓存的几种实现方式小结
2020/02/02 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
[01:11:27]2018DOTA2亚洲邀请赛小组赛 A组加赛 Newbee vs Optic
2018/04/03 DOTA
深入理解Python中各种方法的运作原理
2015/06/15 Python
wxPython的安装图文教程(Windows)
2017/12/28 Python
tensorflow实现逻辑回归模型
2018/09/08 Python
Pycharm代码无法复制,无法选中删除,无法编辑的解决方法
2018/10/22 Python
Python单元测试unittest的具体使用示例
2018/12/17 Python
对python判断ip是否可达的实例详解
2019/01/31 Python
matplotlib 画双轴子图无法显示x轴的解决方法
2020/07/27 Python
一组SQL面试题
2016/02/15 面试题
工商管理专业实习大学生自我鉴定
2013/09/19 职场文书
2013英文求职信模板范文
2013/11/15 职场文书
家长对小学生的评语
2014/01/28 职场文书
政协会议宣传标语
2014/10/09 职场文书
写给医院的感谢信
2015/01/22 职场文书
2015年村党支部工作总结
2015/04/30 职场文书
用JS实现飞机大战小游戏
2021/06/09 Javascript
python双向链表实例详解
2022/05/25 Python