【问题标题】:Export DataTables into multiple Excel worksheets将数据表导出到多个 Excel 工作表中
【发布时间】:2010-11-07 01:45:52
【问题描述】:

我有大量数据表,我想将它们导出到多个 Excel 工作表中(在新的电子表格/Excel 文件中)。我的代码中已经存在的“解决方案”是两个嵌套的for 循环,遍历所有行和列,逐个单元格地插入数据。这并不理想,因为该过程需要超过 10 分钟。由于生成的电子表格为 8.5MB,因此数据量相当大,但肯定有更快的方法吗?

我正在使用 Office 互操作库来执行此操作;我想我记得在某处读过你可以用这些导入 CSV。如果是这种情况,将DataTables转换成CSV然后将其导入Excel会更快吗?如果是,如何?

【问题讨论】:

  • 请注意:Excel 不是数据库。如果它像一个一样使用,它最终会分解。
  • 是的,没关系。它只是一个从数据库中读取数据、对其进行一些计算、在由 DataTables 支持的多个 DataGrids 中显示结果(出于某种原因)然后将它们导出到电子表格中的工具。

标签: c# winforms excel datatable office-interop


【解决方案1】:

您最好的选择可能是通过在 Range 对象上使用 Value 属性设置器来加快速度。它接受一个数组,这比单独设置每个单元格要快得多。您可以在http://support.microsoft.com/kb/302096 看到这个示例。

【讨论】:

    【解决方案2】:

    SpreadsheetGear for .NET 具有类似于 Excel 的 API,但会将您的时间从 10 多分钟缩短到几秒钟(实际上,在现代服务器上生成 8.5MB 工作簿通常需要不到 1 秒)。 SpreadsheetGear 还包括一个 IRange.CopyFromDataTable 方法,它可能对您有用。

    您可以查看实时 ASP.NET 示例(C# 和 VB)here 并下载评估版here

    免责声明:我拥有 SpreadsheetGear LLC

    【讨论】:

    • 哇,看起来很不错,但这只是一个内部工具,所以不能真正证明价格合理。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 2011-11-29
    • 2016-02-28
    • 1970-01-01
    相关资源
    最近更新 更多