ExcelPackage和98万行

我想用codeplex excelpackage编写一个excel文件(2007),但是写入excel文件需要花费很多时间。 我没有find任何可以接受数据源的方法。

我的代码块:

var newFile = new FileInfo(GlobalVariables.Compare2007Path); using (var excelpackage = new ExcelPackage(newFile)) { var myWorkbook = excelpackage.Workbook; myWorkbook.Worksheets.Add("sheetname"); var xlWorkSheet = xlWorkBook.Worksheets["sheetname"]; //loop the data and fill the columns var rowCount = 2; foreach (var compare in objCompare) { xlWorkSheet.Cell(rowCount, 1).Value = compare.adserverIdSite.ToString(); xlWorkSheet.Cell(rowCount, 2).Value = compare.site; xlWorkSheet.Cell(rowCount, 3).Value = compare.adserverIdZone.ToString(); xlWorkSheet.Cell(rowCount, 4).Value = compare.zone; xlWorkSheet.Cell(rowCount, 5).Value = compare.position; xlWorkSheet.Cell(rowCount, 6).Value = compare.weekday; xlWorkSheet.Cell(rowCount, 7).Value = compare.oldimps.ToString(); xlWorkSheet.Cell(rowCount, 8).Value = compare.olduu.ToString(); xlWorkSheet.Cell(rowCount, 9).Value = compare.oldimpsuu.ToString(); xlWorkSheet.Cell(rowCount, 10).Value = compare.newimps.ToString(); xlWorkSheet.Cell(rowCount, 11).Value = compare.newuu.ToString(); xlWorkSheet.Cell(rowCount, 12).Value = compare.newimpsuu.ToString(); xlWorkSheet.Cell(rowCount, 13).Value = compare.diffimps.ToString(); xlWorkSheet.Cell(rowCount, 14).Value = compare.diffimpsperc.ToString(); rowCount++; } excelpackage.Save(); } 

或者除了excelpackage以外还有其他的select。

我发现我的解决scheme的性能的Excel包。 这是你需要应用在excelPackage上的补丁。 补丁可以在这里find。 查找id:1042或更新1233(该补丁中的更多function)。

使用该修补程序,您可以在空白表格上添加数据表。 在14秒内添加98000条logging是在几秒钟内完成的。

SpreadsheetGear for .NET将做到这一点。

您可能需要查看随SpreadsheetGear一起安装的SpreadsheetGear Explorer示例解决scheme(适用于C#或VB)。 高级 – >性能下有一个示例,显示了填充单元格的快速方法。 在我的机器上(超频英特尔QX6850)它在0.05秒内创build了5列4列。

你可以在这里下载一个免费的试用版,它将安装SpreadsheetGear组件和上面提到的SpreadsheetGear Explorer样本。

免责声明:我自己的SpreadsheetGear LLC

我已经使用(并购买) SmartXL创buildExcel文件。 这不是免费的,但为我节省了很多时间。 你可以免费试用30天。