Epplus,内存不足。

4
抱歉我的英语不好。我使用了Epplus库,非常喜欢它。但是我遇到了一个问题:内存不足。需要写入大量数据,无论如何。我想知道是否有可能将内容追加到Excel文件的末尾,而不必在内存中存储所有内容。或者创建多个文件,然后将它们连接成一个文件。谢谢。

应用程序是32位还是64位?64位将提供更大的地址空间,让您使用交换文件。 - user1937198
1
如果应用程序将是64位的,我不明白它如何有所帮助,因为随着时间的推移,数据变得越来越多。那些额外的几兆字节只能解决几天的问题。 - user2572457
64位可以提供高达8TB的本地地址空间,如果你需要存储这么多数据,最好将其存储在数据库中。 - user1937198
我认为捕获这么大量的操作性内存不是最好的解决方案(是否有其他库来解决这个问题?) - user2572457
2
Excel不是存储这么多数据的合适介质,你需要一个真正的数据库。你的工具箱里必须有其他工具;并不是所有东西都可以像钉子一样被敲打。 - Ken White
显示剩余3条评论
1个回答

0

1)如果您从数据库检索数据,请使用Datareader而不是Datatable。

2)将Excel写入临时文件,完成后删除它(如果是Web环境,请使用Response.WriteFile然后删除它)。

3)首先编写标题,然后将数据附加到其中,类似于以下内容(使用我的手机输入此内容)。

var pck = new ExcelPackage();
var ws = pck.AddSheet("sheet1");
//write header here
pck.saveas(fileinfo);
pck.dispose(); // not sure if function existed
pck= new excelpage(fileino.fullname);
ws = pck.worksheets[1];
var rowIndex =0;
while (reader.read())
{
    if (++rowindex % 100000 == 0)
    {
       // save and re-open
    }
    //write row here
}
pck.save();
//dispose / send file / delete file etc

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接