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 |
| 测试代号 | 类库版本 | 运行时版本 | 网址/地址 |
| MS Excel | 14.0.0.0 | 2.0.50727 | \Microsoft Visual Studio 10.0\Visual Studio Tools for Office\PIA\Office14\ |
| 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() + "\r\n");
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。
Excel操作类库最常用到的4种开源项目与MS Excel类库写操作对比分析性能的更多相关文章
- Android常用酷炫控件(开源项目)github地址汇总
转载一个很牛逼的控件收集帖... 第一部分 个性化控件(View) 主要介绍那些不错个性化的 View,包括 ListView.ActionBar.Menu.ViewPager.Gallery.Gri ...
- .NET平台开源项目速览(16)C#写PDF文件类库PDF File Writer介绍
1年前,我在文章:这些.NET开源项目你知道吗?.NET平台开源文档与报表处理组件集合(三)中(第9个项目),给大家推荐了一个开源免费的PDF读写组件 PDFSharp,PDFSharp我2年前就看过 ...
- JAVA连接Excel最好用的开源项目EasyExcel,官方使用文档及.jar包下载
EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址:https://github.com/alibaba ...
- SDRAM单字写操作
SDRAM单字写操作 1.单字写操作时序 2.写verilog程序体会 在初始状态,先写好跳转条件.If()....else... 3.通过仿顺序操作来实现连续写操作 首先完成单字写操作,然后跳转到下 ...
- Python 操作 MS Excel 文件
利用 Python 对 Excel 文件进行操作需要使用第三方库: openpyxl,可执行 pip install openpyxl 进行安装 1. 导入 openpyxl 模块 导入 openpy ...
- Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库
Atitit 图像处理 常用8大滤镜效果 Jhlabs 图像处理类库 java常用图像处理类库1.1. 5种常用的Photoshop滤镜,分别针对照片的曝光.风格色调.黑白照片处理.锐利度.降噪这五大 ...
- 循序渐进开发WinForm项目(5)--Excel数据的导入导出操作
随笔背景:在很多时候,很多入门不久的朋友都会问我:我是从其他语言转到C#开发的,有没有一些基础性的资料给我们学习学习呢,你的框架感觉一下太大了,希望有个循序渐进的教程或者视频来学习就好了. 其实也许我 ...
- CentOS系统操作mysql的常用命令
MySQL名字的来历MySQL是一个小型关系型数据库管理系统,MySQL被广泛地应用在Internet上的中小型网站中.由于其体积小.速度快.总体拥有成本低,尤其是开放源码这一特点,许多中小型网站为了 ...
- phpexcel的写操作将数据库中的数据导入到excel中
这个版本据说是可以支持excel2007,但是我使用2007编辑的xlsx是无法获得该库的支持.于是乎我就将它转化为2003.感觉支持地很好. 下面介绍一下具体的使用: require_once('. ...
随机推荐
- javascript深度克隆对象
/** * * @param obj * @returns {*} */ //深度克隆 function cloneObject(obj) { if (obj === null || typeof(o ...
- IETESTER ie10.local 下载
下载地址:ietester.ie10.exe.local.zip 技术交流QQ群: 15129679
- [置顶] 【玩转cocos2d-x之二十】从CCObject看cocos2d-x的内存管理机制
原创作品,转载请标明:http://blog.csdn.net/jackystudio/article/details/13765639 再看CCObject,剔除上节的拷贝相关,以及Lua脚本相关的 ...
- 公众号 - 解决所有测试中的CORS问题
仅支持GET请求,POST请求会报错. 软件:Chrome 插件:CORS 点击下载 演示:
- 36个Android开发常用代码片段
//36个Android开发常用代码片段 //拨打电话 public static void call(Context context, String phoneNumber) { context.s ...
- oracle 批量更新之update case when then
oracle 批量更新之update case when then CreationTime--2018年8月7日15点51分 Author:Marydon 1.情景描述 根据表中同一字段不同情况 ...
- plsql 存储过程 测试
plsql 存储过程 测试 CreationTime--2018年8月14日09点54分 Author:Marydon 1.找到要运行的存储过程-->选中-->右键-->测试 2 ...
- webservice系统学习笔记1-使用注解创建ws服务
简单入门之helloword,具体详细的在后面的章节详细介绍. 使用JDK自带的jax-ws创建并发布一个简单的webservice 在本地创建服务,然后本机访问 1.创建服务提供接口 IMyServ ...
- 递归和for循环
# -*- coding: utf-8 -*- #python 27 #xiaodeng #http://www.cnblogs.com/BeginMan/p/3223356.html #递归2 '非 ...
- vs2010支持html5+css3
第一步. 先到微软官方下载一个 Microsoft Visual Studio 2010 sp1 . 给传送门:下载 下载到这个东东 ---