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.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。

 

 

from:http://blog.wwery.cn/?p=210


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM