4

我想用 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之外还有其他选择吗?

4

3 回答 3

7

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

使用该补丁,您可以在空白工作表上添加数据表。添加 14 列的 98000 条记录在几秒钟内完成。

于 2009-12-22T13:42:04.117 回答
1

SpreadsheetGear for .NET可以做到。

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

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

免责声明:我拥有 SpreadsheetGear LLC

于 2009-12-21T15:58:50.033 回答
0

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

于 2009-12-21T13:42:30.303 回答