xlrd/xlwt与openpyxl的读写效率比较
来源:互联网 发布:风冷知乎 编辑:程序博客网 时间:2024/06/05 07:52
之前写过python中xlrd/xlwt与openpyxl处理Excel的文章,也提到过两者的主要区别在于写入操作,其中xlwt针对Ecxec2007之前的版本,即.xls文件,其要求单个sheet不超过65535行,而openpyxl则主要针对Excel2007之后的版本(.xlsx),它对文件大小没有限制。另外就是两者读写速度存在差异,为了比较它们的差异,特别做了以下测试:
测试一:xlrd与openpyxl的读取速度差异
由于文件较小时,两者差别不明显,因此这里选取了一个137732行、10列,大小为7.53MB的.xlsx文件进行测试,分别使用xlrd与openpyxl模块读取同一位置的值并打印,过程中利用time.clock()计算所用时间(win10-x64,i5系统),两者代码如下:
#使用xlrd进行读取import xlrdimport timetime.clock()f = xlrd.open_workbook('test.xlsx')sheet1 = f.sheet_by_name('Sheet1')print(sheet1.cell(137731,2).value)t = time.clock()print(t)
#使用openpyxl进行读取import openpyxlimport timetime.clock()f = openpyxl.load_workbook('test.xlsx')sheet1 = f['Sheet1']print(sheet1.cell(row = 137732 ,column = 3).value)t = time.clock()print(t)
重复进行5次结果如下 :
可见对于大文件的读取,xlrd有明显的优势。
测试二:xlwt与openpyxl的写入速度差异
这里不考虑表格字体、边框、对齐等格式要求,分别用xlwt与openpyxl生成一个65535行,1列,单元格内为整型数值的.xls与xlsx文件,代码如下:
#使用xlwt生成文件import xlwtimport timetime.clock()f = xlwt.Workbook()sheet1 = f.add_sheet('A Demo')for i in range(65535): sheet1.write(i,0,i)f.save('xlwt.xls')t = time.clock()print(t)
#使用openpyxl生成文件import openpyxlimport timetime.clock()f = openpyxl.Workbook()sheet1 = f.activefor i in range(65535): sheet1.cell(row = i+1,column = 1,value = i)f.save('openpyxlw.xlsx')t = time.clock()print(t)
5次测试结果如下:
同样可以发现xlwt在写入时速度更快,效率更高。
整体而言,两个库对小文件的读写速度差别不大,而当文件较大时,xlrd/xlwt速度明显优于openpyxl,但因为xlwt无法生成xlsx是个硬伤,所以想要尽量提高效率又不影响结果时,可以考虑用xlrd读取,用openpyxl写入。
阅读全文
0 0
- xlrd/xlwt与openpyxl的读写效率比较
- Python操作excel的几种方式--xlrd、xlwt、openpyxl
- 使用xlrd/xlwt,openpyxl库处理Excel的例子
- xlrd与xlwt的使用
- Python读写Excel:xlrd与xlwt
- xlrd and xlwt 读写
- python库之xlwt+xlrd+openpyxl
- python中使用xlrd、xlwt库以及openpyxl库读写excel浅析
- 使用Python xlrd与xlwt模块读写Excel
- Python.xlrd&xlwt -- Excel读写
- Python xlrd xlwt读写Excel
- python的xlrd&xlwt
- python excel 的相关操作(使用 xlrd xlwt 读写)
- python写excel文件,openpyxl, xlrd, xlwt,xlutils
- xlrd与xlwt库的异同与操作
- 用python读写excel(xlrd、xlwt)
- Python操作Excel读写--xlrd、xlwt模块
- Python简单读写Excel (xlwt, xlrd, xlutils)
- ]scikit-learn进行机器学习
- C语言Link_List简单实现
- golang
- 调用Android自带浏览器打开网页
- Java后端学习资源群
- xlrd/xlwt与openpyxl的读写效率比较
- 大数据(十七)Hive【Hive介绍】
- SecureCRT下spark-shell中scala无法删除
- NGUI_PopupList_012
- java NIO
- mvc mvp mvvm
- POJ 2187 Beauty Contest(凸包:最远点对距离)
- pat1010
- 1277 字符串中的最大值 next数组的妙用