因为需要用过Excel 文件的数据读写,所以特别调查了一下主流的几种读写excel的方法及性能。
测试环境:win10 + 8G内存
测试数据:excel文件(100万行*100列)
操作:读取Excel文件A的数据,并另存到Excel文件B
测试结果:
测试工具 | 读取时间(s) | 保存时间(s) |
python/pandas | 56.8 | 138.1 |
python/openpyxl | 84.5 | 109.3 |
C#/ExcelDataReader | 29.3 | |
C#/CloseXml | 136.9 | 内存不足、中断 |
C#/NPOI | 内存不足、中断 | |
C#/Interop.Excel | 11.0 | 7.7 |
另外还测试了100万行*100列的数据。此时只有C#/Interop.Excel方法可行,读取需要99s,保存需要86s,耗时是随数据的增加而线性增加。其它的方法,全部出现异常,不能使用。
因此,可以推测excel自带的宏功能,应该是Excel读写的最快方式。因为C#/Interop.Excel方法也不过是在后台隐式运行Excel,使用excel本身开放的api来实现文件的读写。