2013-07-11 164 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