ExcelPackage和98,000行

时间:2009-12-21 13:28:20

标签: c# excel excelpackage

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

我的代码:

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还有其他选择。

3 个答案:

答案 0 :(得分:7)

我找到了我的excel包性能解决方案。这是您需要在excelPackage上应用的补丁。可以找到补丁here。查找id:1042或更新1233(该补丁中的更多功能)。

使用该补丁,您可以在空白纸上添加数据表。添加98000条记录和14列只需几秒钟。

答案 1 :(得分:1)

SpreadsheetGear for .NET会这样做。

您可能希望查看随SpreadsheetGear一起安装的SpreadsheetGear Explorer示例解决方案(对于C#或VB)。高级下有一个示例 - >显示填充单元格的快速方法的性能。在我的机器上(超频的Intel QX6850),它在0.05秒内创建了50,000行4列。

您可以下载免费试用here,它将安装SpreadsheetGear组件和上面提到的SpreadsheetGear Explorer示例。

免责声明:我拥有SpreadsheetGear LLC

答案 2 :(得分:0)

我使用(并购买)SmartXL来创建Excel文件。这不是免费的,但它为我节省了很多时间。您可以免费试用30天。