Excel操作类库最常用到的4种开源项目与MS Excel类库写操作对比分析性能

4种开源Excel读写类库与MS Excel类库写操作对比

软件开发过程中,经常需要将数据保存为.xls或.xlsx文件。之前发现微软提供的Microsoft.Office.Interop.Excel效率及其底下,所以搜集了另外4个可以独立读写Excel的开源类库,对写操作进行对比。

测试平台:

CPU Intel Xeon, 3200 MHz (16 x 200)
主板 MSI E7525 Master-S2 (MS-9151)
内存 1024 MB  (Registered ECC DDR2 SDRAM)
操作系统 Microsoft Windows 7 Ultimate SP1 (x86)
开发平台 Visual Studio 2010 & .Net Framework 4.0
测试用的5个类库:
测试代号 类库版本 运行时版本 网址/地址
MS Excel 14.0.0.0 2.0.50727 Microsoft Visual Studio 10.0Visual Studio Tools for OfficePIAOffice14
ExcelPackage 1.0.0.1 2.0.50727 http://excelpackage.codeplex.com/
EPPlus 2.9.0.1 2.0.50727 http://epplus.codeplex.com/
NPOI 1.2.4.0 4.0.30319 http://code.google.com/p/npoi/
ExcelLibrary 1.0.0.0 v2.0.50727 http://code.google.com/p/excellibrary/

在测试开始之前,先将一个366行8列的数据集读入内存,为了避免数据存入硬盘等操作产生的误差,测试仅记录了将数据循环写入数据表中单元格所消耗的时间,为了消除可能的误差,每次操作之间设计了一个30秒的停顿,代码框架如下:

 1: for (int s = 0; s < 51; s++)
 2: {
 3:     System.Diagnostics.Stopwatch MyWatch = new System.Diagnostics.Stopwatch();
 4:     //初始化
 5:     MyWatch.Start();
 6:     for (int i = 0; i < rows; i++)
 7:     {
 8:         for (int j = 0; j < columns; j++)
 9:         {
 10:             //写入单元格数据;
 11:         }
 12:     }
 13:     MyWatch.Stop();
 14:     //垃圾回收; 
 15:     textBox.AppendText(MyWatch.ElapsedMilliseconds.ToString() + "
");
 16:     System.Threading.Thread.Sleep(30000);
 17: }

取重复测试51次,首次运行一般耗时较长,未计算在内,其余的计算平均值,结果如下表所示:

平均速度对比

光从效率上讲,ExcelLibrary以平均高出第二名将近3倍,领先微软自己的Excel类库2700多倍的速度遥遥领先!但是兼容性和导出文件大小还是需要关注的。测试用的数据集粘贴在Excel 2010空文件中保存后,.xls文件大小为57KB,.xlsx文件为26KB,导出后的文件大小却不相同。细节如下图:

导出文件大小对比

综合上述,如果单需要导出.xlsx格式,EPPlus显然是最佳选择,导出速度在所有支持07-10格式的类库中最快,生成的文件也最小;如果单需要导出.xls格式,ExcelLibrary是首选,速度遥遥领先,文件大小也有略有优势;就算同时需要导出两种格式,MS Excel依然不是首选,应为速度实在是慢到令人发指……需要注意的是,大于65536行的数据.xls格式不支持,必须使用.xlsx。

转载原地址:http://blog.wwery.cn/?p=210

原文地址:https://www.cnblogs.com/spring_wang/p/3157168.html