官網:
- http://npoi.codeplex.com/ (~1.2.3)
- http://code.google.com/p/npoi/ (1.2.4)
- VS2005 or VS2008 with .NET 2.0 Runtime (SP1)
- vs2003 with .NET 1.1
- medium trust environment in ASP.NET
EPPlus:EPPlus is a .net library that reads and writes Excel 2007/2010 files using the Open Office Xml format (xlsx).
官網:http://epplus.codeplex.com/
System Requirements:
- .Net Framwork 3.5 or higher
NPOI vs. EPPlus:比較匯出大量資料的時間
NPOI:
private void ExportNPOI()
{
logger.Info("begin npoi");
HSSFWorkbook workbook = new HSSFWorkbook();
MemoryStream ms = new MemoryStream();
HSSFSheet sheet = workbook.CreateSheet();
for (int i = 0; i < 65535; i++)
{
HSSFRow row = sheet.CreateRow(i);
row.CreateCell(0).SetCellValue("npoiformats");
}
workbook.Write(ms);
logger.Info("end npoi");
Response.ContentType = "application/download";
Response.AddHeader("Content-Disposition", "attachment; filename=file.xls");
Response.Clear();
Response.BinaryWrite(ms.GetBuffer());
ms.Close();
ms.Dispose();
}
EPPlus:
private void ExportEPPlus()
{
logger.Info("begin epplus");
ExcelPackage pck = new ExcelPackage();
var ws = pck.Workbook.Worksheets.Add("Sample2");
for (int i = 1; i < 65999; i++)
{
ws.Cells[i, 1].Value = "openxmlformats"; //Set the value of cell A1 to 1
ws.Cells[i, 2].Value = "openxmlformats";
ws.Cells[i, 3].Value = "openxmlformats";
ws.Cells[i, 4].Value = "openxmlformats";
ws.Cells[i, 5].Value = "openxmlformats";
}
logger.Info("end epplus");
Response.Clear();
Response.AddHeader("content-disposition", "attachment; filename=file.xlsx");
Response.ContentType = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
Response.BinaryWrite(pck.GetAsByteArray());
Response.End();
}
Excel2007可會出超過65535筆資料。使用NPOI產出65535筆資料花費41 sec,我測試的最佳紀錄為25秒。
使用EPPlus產出65999筆花費2 sec。
Log File:
2011-07-21 15:09:18.8851|INFO|ExcelCompare._Default|begin npoi 2011-07-21 15:09:59.2133|INFO|ExcelCompare._Default|end npoi 2011-07-21 15:10:02.4633|INFO|ExcelCompare._Default|begin epplus 2011-07-21 15:10:04.7758|INFO|ExcelCompare._Default|end epplus
65535跟65999是怎樣?
回覆刪除Excel2003最多65535;Excel2007没有这个限制。
刪除