我只是创建报告项目。
但是我发现当我导出具有许多复杂且非常高的记录(1-10M记录)的报告时,我的服务器内存负载非常高(16GB +)。
我的流程。 1.使用linq to sql查询数据库并将它们存储在datatable中。 2.然后使用openxml将数据表导出到excel。
我一直在研究一下,找到了切片数据表并导出到excel中的几个工作表的解决方案。
但我认为这不是我的真正目标。 我的问题是如何解决数据表高内存问题?
谢谢。
答案 0 :(得分:0)
没有理由去找DataTable
。只需将IQueryable
中的数据直接传输到OpenXML库中(即在Linq查询结果上使用foreach
并将每行推入库中,或手动编写)。
如果您必须存储它,请使用适当的类。 DataTable
在内部存储为object
的数组列表,从而装箱所有值类型(影响性能和内存使用)。