Public Function GenerateReportAsExcel()
Dim workbook = WorkbookFactory.Create(template)
template.Close()
Dim worksheet = workbook.GetSheetAt(0)
// Writing record to worksheet
Dim workbookStream = New MemoryStream()
workbookStream.Flush()
workbookStream.Position = 0
workbook.Write(workbookStream) //throws error if the rocord is more then 500000...runs fine for 400000
Return New MemoryStream(workbookStream.ToArray())
End Function
WorkbookFactory使用NPOI.SS.UserModel ....的System.OutOfMemoryException而寫脫穎而出
是否有增加內存的流容量的方法嗎?寫入500000記錄到Excel時,我得到System.OutOfMemoryException,但最多400000記錄正常工作。 我發現了幾個類似的問題,但沒有得到任何固體解決這個問題... 有人一個建議使用
workbookStream.Flush() workbookStream.Position = 0但 沒有任何幫助....
感謝您的關注..
我看到一些拷貝發生了(看起來你最終在內存中有3個拷貝 - 一個來自工廠,一個拷貝放在第一個內存流中,然後當你拷貝它時再拷貝一個拷貝。註釋掉的中間是什麼?創建垃圾的速度超過了GC可以收集的速度,或者創建了無法收集的垃圾,例如不調用dispose,或者您正在使用內存數據結構,而這些數據結構不適合空間IIS允許它(這是小的,如每個請求800MB) – MatthewMartin 2014-10-07 13:52:56
當在400000條記錄(又名長度屬性)時woorkBookstream有多大? – user957902 2014-10-07 13:56:09
只要給我一秒讓我檢查... – Scorpio 2014-10-07 13:56:46