这个问题似乎在最新版本的 EPPlus (4.0.x) 中得到解决
编辑:在 EPPlus 4.0.4 中添加指向改进内存管理的页面的参考链接。
https://epplus.codeplex.com/releases/view/118053#ReviewsAnchor
用户对 4.x 版本与 3.x 版本相比内存性能改进的评论。
https://epplus.codeplex.com/wikipage?title=
路线图 4.0 版:新的 cellstore 以提高插入、删除性能和内存消耗
此链接说明了如何确保优化加载大量单元格。
http://epplus.codeplex.com/wikipage?title=FAQ&referringTitle=Documentation
参考部分“我有很多数据要加载。我应该如何考虑才能获得最佳性能?”
另外,我今天亲自测试了 EPPlus 4.0.4,一次写出 150 万条记录,5 个数字行和 1 个 DateTime 行,Windows 任务管理器报告的峰值内存工作集仅为 711 MB。Windows 任务管理器显示的非分页池只有 75K 左右!当然,我不确定这些数字是否反映了内存占用的全部影响,但这些都是指示性的。输出的 Excel 文件大约 59MB(可能是我的列比您在原始帖子中提到的示例数据更多。)
注意:当我尝试一次写入 7 列的 450 万条记录时,我确实收到了“OutOfMemoryException”!
我的测试够严格吗?也许不是……不过对我来说效果很好。
但是,为了克服早期版本中的大内存需求,我可以想到的一种解决方法是为每 100K 记录拆分并保存一个 xlsx 文件。保存后,开始为接下来的 100K 记录使用新文件(具有适当的文件名计数器增量)。
在您的操作结束时,您最终将拥有 10 个包含 100K 记录的文件,例如总共 100 万条记录。
可能看起来有点 hack,但是,嘿,可能比重写代码库以使用其他库(免费或商业)更好。