2013-07-11 158 views
4

对不起,我的英语。我使用了Epplus库,我非常喜欢它。但我有一个问题:内存不足。无论如何,都需要编写大量的数据。我想知道是否有可能追加到Excel文件的末尾并不存储在所有的内存中。或创建多个文件,然后连接成一个文件。提前致谢。Epplus,内存不足

+0

是对应用程序32或64位? 64位将提供更大的地址空间来处理并让您使用交换文件。 – user1937198

+1

如果应用程序将是64,我不明白它是如何提供帮助的,因为随着时间的推移,数据越来越多。而那些额外的几兆字节,是几天的解决方案。 – user2572457

+0

64位为本地地址空间提供了高达8TB的空间,如果您获得了大量数据,您可能希望将其存储在数据库中。 – user1937198

回答

0

1)如果从数据库 检索数据使用DataReader,而不是数据表

2)写Excel中一个临时文件,将其删除完成后(如果它的网络环境中,使用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