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

xiaohuhu xiaohuhu     2022-12-18     276

关键词:

之前写过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写入。

python中使用xlrdxlwt库以及openpyxl库读写excel浅析

本文内容主要是:1、python中使用xlrd、xlwt库读写excel(xls)浅析2、python中使用openpyxl库读写excel(xlsx)浅析(亲测推荐使用openpyxl库,解决了问题:ValueError:rowindexwas65536,notallowedby.xl 查看详情

如何使用python将大量数据导出到excel中的小技巧

...解决以上两个问题。(2)具体步骤如下:1.第一步,安装openpyxl,使用pipinstallopenpyxl即可,但是在windows下安装的是2.2.6版本,但是centos自动安装的是4.1版本,(多谢海哥的提醒)。写的代码在windows下运行没问题,但centos上却报错了... 查看详情

python办公自动化之操作excel(一)

参考技术A处理Excel的库主要有xlrd、xlwt、xlwings和openpyxl。xlrd、xlwt、xlwings可以用于处理Excel2010文档之前的文档,而openpyxl是用于处理Excel2010文档的Python库。Workbook-工作簿、Worksheet-工作表、Cell-单元格是openpyxl库中的三大要素。单元... 查看详情

使用python的pandas库操作excel(代码片段)

...有很多库可以操作Excel,像pandas、xlrd、xlwt、xlutils、openpyxl 等。xlrd库:读取Excel文件xlwt库:写入Excel文件xlutils库:操作Excel文件的实用工具,如复制、分割、筛选等xlrd、xlwt、xlutils库可以读写操作后缀为xls的ex... 查看详情

78excel的读写操作

...主要是用python来自动生成excel数据文件也就是简单的excel读写操作。python读写excel文件主要是第三方模块库xlrd、xlwt。本篇导航:写excel读excel 一、写excel1、准备工作pipinstallxlwt2、写excelimportxlwtwb=xlwt.Workbook()sheet=wb.add_sheet(‘sheet... 查看详情

这可能是全网最完整的python操作excel库总结(代码片段)

...化系列文章中,我已经对Python操作Excel的几个常用库openpyxl、xlrd/xlwt、xlwings、xlsxwriter等进行了详细的讲解。为了进一步带大家了解各个库的异同,从而在不同场景下可以灵活使用,本文将横向比较7个可以操作Excel文件... 查看详情

插上翅膀,让excel飞起来——xlwings

...Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等,他们提供的功能归纳起来有两种:一、用python读写Excel文件,实际上就是读写有格式的文本文件,操作excel文件和操作text、csv文件没有区别,Excel文件只是... 查看详情

插上翅膀,让excel飞起来——xlwings

...Excel的模块,网上提到的模块大致有:xlwings、xlrd、xlwt、openpyxl、pyxll等,他们提供的功能归纳起来有两种:一、用python读写Excel文件,实际上就是读写有格式的文本文件,操作excel文件和操作text、csv文件没有区别,Excel文件只是... 查看详情

python办公自动化之xlrd,xlwt(代码片段)

一、安装pip3installxlrd==1.2.0目前最新版本为2.0.1,不支持处理xls文件二、各类函数详解importxlrdasrd1、打开excel文件,返回类型(<class‘xlrd.book.Book’>)rd.open_workbook(filename=None, logfile 查看详情

python办公自动化之xlrd,xlwt(代码片段)

一、安装pip3installxlrd==1.2.0目前最新版本为2.0.1,不支持处理xls文件二、各类函数详解importxlrdasrd1、打开excel文件,返回类型(<class‘xlrd.book.Book’>)rd.open_workbook(filename=None, logfile 查看详情

xlwingsapi要如何导入

...lwt这类模块操作excel,但xlrd/xlwt连xlsx都不支持,便转到了openpyxl,openpyxl的缺点是不能在文件打开状态写入,不好调试,文件被写坏了都不知道。于是选择了xlwings这个可以“代替VB成为Excel后台”的插件,个人认为差强人意,最大... 查看详情

处理excel文件

...cel文件,我们需要先安装几个Python默认没有的包,分别是xlrd,xlwt和xlutils。xlrd:读取Excel文件;xlwt:向Excel文件写入,并设置格式;xlutils:一组Excel高级操作工具(这个包需要xlrd和xlwt的支持)具体的安装方法请参考 查看详情

excel操作

一、python操作excel使用xlrd、xlwt和xlutils模块,xlrd模块是读取excel的,xlwt模块是写excel的,xlutils是用来修改excel的。这几个模块使用pip安装即可,下面是这几个模块的使用。二、xlrd模块,xlrd模块用来读excel,具体用法如下:第一步... 查看详情

openpyxl的简单使用(代码片段)

openpyxl  操作excel的库,只能操作xlxs文件, xlrd/xlwt这两个库能兼容xls(2003版)安装pipinstallopenpyxl如果excel里面有图片,需要安装图片处理模块pipinstallpillowexcel的写入  创建一个工作簿并保存fromopenpyxlimportWorkbookwb=Workbook()w... 查看详情

pandas入门(代码片段)

...认的pandas不能读取excel。需要安装xlrd,xlwt才能支持excel的读写 1pipinstallxlrd#添加读取excel功能2pipinstallxlwt#添加写入excel功能2.pandas基本数据结构是Series和DataFrameSeries序列,类似与一维数组;DataFrame则相当于一张二维表格,类似于... 查看详情

openpyxl模块(excel操作)(代码片段)

openpyxl模块介绍openpyxl模块是一个读写Excel2010文档的Python库,如果要处理更早格式的Excel文档,需要用到额外的库,openpyxl是一个比较综合的工具,能够同时读取和修改Excel文档。其他很多的与Excel相关的项目基本只支持读或者写Exc... 查看详情

openpyxl库(代码片段)

...其值2.3写数据2.4设置样式    1.简介与安装openpyxl简介openpyxl是一款比较综合的工具,不仅能够同时读取和修改Excel文档,而且可以对Excel文件内单元格进行详细设置,包括单元格样式等内容,甚至还支持图表插入、... 查看详情

java多种文件复制方式以及效率比较

1.背景java复制文件的方式其实有很多种,可以分为传统的字节流读写复制FileInputStream,FileOutputStream,BufferedInputStream,BufferedOutputStream传统的字符流读写复制FileReader,FileWriter,BufferWriter,BufferedWriter,BufferedReaderNIO系列的FileChannel 查看详情