以前研究过 pyExcelerator库和xlrd库,时间久了,记不太清。看到如下文章,很是和我当时的研究的状况,故记下备查。python
原文:http://blog.csdn.net/menuconfig/article/details/8672963数据结构
Python处理excel文件主要使用两个库:pyExcelerator 和 xlrd。两个库虽然都具有读写excel文件的功能,但显然是各有千秋,总结一下大概就是:pyExcelerator适合写入数据,而xlrd则适合读取数据。post
1、pyExcelerator库的介绍.net
pyExcelerator读取数据不方便,由于它不提供表格的行数、列数、单元格数据类型等关键信息的访问接口,也不支持空数据的存在,所以你无法对它进行循环操做。它读取数据的机制是这样的:sheets=parse_xls(filename) 这个sheets返回的是一个列表,每一项是一张sheet的数据,每一项自己是一个二元组的数据结构(表名,单元格数据),单元格数据又是一个字典结构,key是单元格的索引(i,j),value是单元格的数据。总结一下,若是你想获取此excel文件的第N张工做表的第i行第j列的单元格数据,则应该是这样:sheets[n][1][(i,j)]。excel
而当要将数据写入excel时,咱们就可使用pyExcelerator来操做,很方便,一些操做示例:code
from pyExcelerator import * w=Workbook() #建立工做簿 ws=w.add_sheet('Sheet1') #添加工做表 ws.write(i,j,value) #写入单元格 w.save('book.xls')
2、xlrd库的介绍blog
相比之下,xlrd库读取数据则要方便的多,下面是一些使用范例:索引
import xlrd wb = xlrd.open_workbook('book.xls') #打开文件 sh = wb.sheet_by_index(0) #得到工做表的方法1 sh = wb.sheet_by_name('Sheet1') #得到工做表的方法2 cellA1Value = sh.cell_value(i, j) #得到单元格数据 columnValueList = sh.col_values(i) #得到一列的数据 row_count=sh.nrows #得到行数 col_count=sh.ncols #得到列数
但须要注意的是:xlrd库目前彷佛还不支持excel2007版本,故使用时要注意处理的excel文件版本。接口