0

这是场景:

  • 我想导出到 XLSX 电子表格的 SQL Server 2008 R2 数据库中有大约 40 万条记录。
  • 该应用程序是一个 ASP.NET 4.0 Web 应用程序

我尝试将 DataTable 与 ReportViewer 一起使用,但由于将整个 DataTable 读入内存,w3wp 进程内存使用量猛增。

我认为 Gembox 电子表格会更好地处理这种情况,猜测我可以使用 DataReader 而不是 DataTable,只需将新行写入 Excel 工作簿工作表并将其刷新到 HTTP 流上。但我在 Gembox 电子表格的任何地方都找不到该功能。有没有人用 Gembox 或任何其他 3rd 方组件实现过类似的东西?

4

1 回答 1

0

我只是在这里猜测它,但你应该能够使用 SQLDataReader 来做到这一点。SQL DataReader 与 SQL DataSet 不同。前者一次检索一条记录,并且需要实时连接到数据库。我认为它不应该造成内存问题。后者立即检索整个表,这可以使内存使用量猛增。这是微软的一篇好文章,datareader 和 dataset 之间的区别

另请注意,Excel 也有限制。顺便说一句,Excel 2007 相当不错,可以处理 1000k x 16k 记录。旧版本的 Excel 肯定更受限制。Excel 2007 限制

我也在想如果 Excel 能处理这么大的文件,你的程序应该能处理 40 万条记录。我知道这是很多数据,但操作系统通常会负责内存管理,除非您正在做一些完全错误的事情。

于 2013-08-02T18:30:21.307 回答