xlrd/xlwt与openpyxl的读写效率比较

之前写过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 xlrd
import time

time.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 openpyxl
import time

time.clock()
f = openpyxl.load_workbook(‘test.xlsx‘)
sheet1 = f[‘Sheet1‘]
print(sheet1.cell(row = 137732 ,column = 3).value)
t = time.clock()
print(t)

重复进行5次结果如下 :

方法 第一次(s) 第二次 第三次 第四次 第五次 平均时间
xlrd 13.574 13.110 13.209 13.187 13.075 13.231
openpyxl 20.815 21.959 21.264 20.820 22.359 21.443

可见对于大文件的读取xlrd耗时大概为openpyxl的61.7%,有较大优势。

测试二:xlwt与openpyxl的写入速度差异

?? 这里不考虑表格字体、边框、对齐等格式要求,分别用xlwt与openpyxl生成一个65535行,1列,单元格内为整型数值的.xls与xlsx文件,代码如下:

#使用xlwt生成文件
import xlwt
import time

time.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 openpyxl
import time

time.clock()
f = openpyxl.Workbook()
sheet1 = f.active
for i in range(65535):
    sheet1.cell(row = i+1,column = 1,value = i)
f.save(‘openpyxlw.xlsx‘)
t = time.clock()
print(t)

5次测试结果如下:

方法 第一次(s) 第二次 第三次 第四次 第五次 平均时间
xlwt 1.232 1.175 1.185 1.563 1.221 1.275
openpyxl 3.028 3.023 2.953 3.025 3.035 3.013

同样可以发现xlwt耗时大概为openpyxl的42.3%,效率明显较高。

??整体而言,两种包对小文件的读写速度差别不大,而面对较大文件,xlrd/xlwt速度明显优于openpyxl,但因为xlwt无法生成xlsx是个硬伤,所以想要尽量提高效率又不影响结果时,可以考虑用xlrd读取,用openpyxl写入。

原文地址:https://www.cnblogs.com/xiaohuhu/p/9387486.html

时间: 2024-10-10 13:37:14

xlrd/xlwt与openpyxl的读写效率比较的相关文章

Python操作excel的几种方式--xlrd、xlwt、openpyxl

openpyxl xlrd xlwt 在处理excel数据时发现了xlwt的局限性–不能写入超过65535行.256列的数据(因为它只支持Excel 2003及之前的版本,在这些版本的Excel中行数和列数有此限制),这对于实际应用还是不够的.为此经过一番寻找发现了一个支持07/10/13版本Excel的openpyxl,虽然功能很强大,但是操作起来感觉没有xlwt方便.下面分别说下几个模块的常用操作. xlrd xlrd是用来从Excel中读写数据的,但我平常只用它进行读操作,写操作会遇到些问

自己总结python用xlrd\xlwt读写excel

1.首先安装xlrd\xlwt模块 xlrd模块下载地址: https://pypi.python.org/pypi/xlrd xlwt模块下载地址: https://pypi.python.org/pypi/xlwt linux 安装命令 python setup.py install windos 安装命令 setup.py install 2.使用方法大全 基础方法推荐请看这里: http://blog.csdn.net/mr__fang/article/details/7089581 简

Python处理Excel文档(xlrd, xlwt, xlutils)

简介 xlrd,xlwt和xlutils是用Python处理Excel文档(*.xls)的高效率工具.其中,xlrd只能读取xls,xlwt只能新建xls(不可以修改),xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改. (以下属性或方法并非全部,需要更多属性请参看文档:建议先参考文末Demo,再深入了解) xlrd Book(class) 由xlrd.open_work("example.xls"

【转】python操作excel表格(xlrd/xlwt)

[转]python操作excel表格(xlrd/xlwt) 最近遇到一个情景,就是定期生成并发送服务器使用情况报表,按照不同维度统计,涉及python对excel的操作,上网搜罗了一番,大多大同小异,而且不太能满足需求,不过经过一番对源码的"研究"(用此一词让我觉得颇有成就感)之后,基本解决了日常所需.主要记录使用过程的常见问题及解决. python操作excel主要用到xlrd和xlwt这两个库,即xlrd是读excel,xlwt是写excel的库.可从这里下载https://pyp

【Python】excel读写操作 xlrd & xlwt

xlrd ■ xlrd xlrd模块用于读取excel文件内容 基本用法: workbook = xlrd.open_workbook('文件路径') workbook.sheet_names() #返回所有sheet的列表 workbook.sheet_by_index(...) #通过index来获得一个sheet对象,index从0开始算起 workbook.sheet_by_name(...) #根据sheet名获得相应的那个sheet对象 在得到sheet对象之后,就可以用它的一些方法

python-操作exel(xlrd,xlwt)

1.使用第三方库 python中处理excel表格,常用的库有xlrd(读excel)表.xlwt(写excel)表.openpyxl(可读写excel表)等. xlrd读数据较大的excel表时效率高于openpyxl,所以我在写脚本时就采用了xlrd和xlwt这两个库.介绍及下载地址为:http://www.python-excel.org/ 这些库文件都没有提供修改现有excel表格内容的功能.一般只能将原excel中的内容读出.做完处理后,再写入一个新的excel文件. 1.安装 pip

python+xlrd+xlwt操作excel

介绍 xlrd(读操作),xlwt(写操作) 上述软件下载后,分别解压,之后在cmd命令下分别进入对应的目录中运行 python setup.py install 如果运行过程中提示缺少setuptools,则先运行python ez_setup.py之后在重复上面的步骤 PS:office的版本不要用太高的,建议最好用03版本的,且后缀为xls的 源码bug修复 安装好xlwt3后,找到formula.py文件,将其中的 __slots__ = ["__init__", "

xlrd xlwt操作

简介 xlrd,xlwt和xlutils是用Python处理Excel文档(*.xls)的高效率工具.其中,xlrd只能读取xls,xlwt只能新建xls(不可以修改),xlutils能将xlrd.Book转为xlwt.Workbook,从而得以在现有xls的基础上修改数据,并创建一个新的xls,实现修改. (以下属性或方法并非全部,需要更多属性请参看文档:建议先参考文末Demo,再深入了解) xlrd Book(class) 由xlrd.open_work("example.xls"

整合Excel两个表的数据 - 2 | xlrd | xlwt | Python

# coding=utf-8 import os import datetime import xlrd from xlwt import Workbook from xlrd import xldate_as_tuple agent_num = { "14": 1, "13": 1, "12": 1, "11": 1, "10": 1, "9": 1, "8": 1