【发布时间】:2013-06-18 14:35:43
【问题描述】:
这是场景:
- 我在 SQL Server 2008 R2 数据库中有大约 40 万条记录,我想将其导出到 XLSX 电子表格。
- 应用程序是 ASP.NET 4.0 Web 应用程序
我尝试使用带有 ReportViewer 的 DataTable,但由于整个 DataTable 被读入内存,w3wp 进程的内存使用量猛增。
我认为 Gembox 电子表格会更好地处理这种情况,我猜测我可以使用 DataReader 而不是 DataTable,只需将新行写入 Excel 工作簿工作表并将其刷新到 HTTP 流上。 但我在 Gembox 电子表格的任何地方都找不到该功能。有没有人用 Gembox 或任何其他第三方组件实现过类似的东西?
【问题讨论】:
-
将 400k 记录分成更小的块是否有意义,比如说 10k。这样你就不会遇到内存问题。
-
这是有道理的,但是这对于 ReportViewer 是不可行的,因为我最终必须将所有内容都推送到 DataTable 中,这会破坏您建议的实现。这同样适用于 Gembox。
标签: asp.net memory-management gembox-spreadsheet