【问题标题】:how to bulk export data to excel如何批量导出数据到excel
【发布时间】:2014-02-11 09:23:00
【问题描述】:

我有大约 80 到 90 列的表,它的数据大约 800000 到 900000,我需要使用 asp.net 和 c# 将大约 400000 的数据导出到 excel。

我尝试使用 Open-XML DOM 方法从数据集中导出数据,但它会挂起系统并在某些时候出现 Memory Out of Bound 错误。

可以使用任何其他方法将数据从 sqlserver 导出到 Microsoft excel 2007/2010。

【问题讨论】:

标签: c# asp.net sql-server excel


【解决方案1】:

您知道 excel 可以毫无问题地打开 CSV(逗号分隔值)文件吗?

这是我能看到的最好和最薄的处理方式。

并且不要将它们放入数据集中。使用阅读器并在阅读它们时将它们写到响应流中。无需在内存中实现它们。

【讨论】:

    【解决方案2】:

    DOM 让一切变得简单,因为一切都是强类型的。不幸的是,DOM 方法需要将整个 Open XML 部分加载到内存中,这可能会导致内存不足异常。

    您还可以使用 Brian Jones 的以下文章中解释的类似 SAX 的编写功能:

    Writing Large Excel Files with the Open XML SDK

    【讨论】:

      【解决方案3】:

      当您处理如此庞大的数据时,TomTom 建议的方法将是最好的。但如果您希望导出的文件是 xls 或 xlsx,那么您可以尝试将 Excel 文件视为数据源并使用OleDb 连接到数据源(本例中为 Excel 文件)。并使用插入查询将行插入到 excel 文件中。

      您也可以尝试使用 Microsoft.Office.Interop.Excel 写入 excel 文件。但我仍然不确定处理如此大量的数据会消耗多少时间。

      【讨论】:

      • 我也想过这个问题,但问题中的网络参考让我认为它可能不会那样工作 - 没有健全的网站可以保持 sql 服务器可用和/或用户无法访问数据库.如果您希望通过网站进行此操作,则该网站对用户工作流程也更容易。
      【解决方案4】:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-10-06
        • 2017-04-08
        • 2015-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-20
        相关资源
        最近更新 更多