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 при записи, чтобы преуспеть
Есть ли способ, чтобы увеличить пропускную способность потока памяти? Я получаю System.OutOfMemoryException при записи 500000 записей в excel, но запись до 400000 отлично работает. я нашел пару подобной проблеме, но не получают никакого твердого решения этой проблемы ... Кто-то один предложил использовать
workbookStream.Flush() workbookStream.Position = 0 , но не какой-либо помощи ....
Спасибо за беспокойство ..
Я вижу, что происходит какое-то копирование (похоже, что вы закончили с 3-х копиями в памяти - с фабрикой, копией, которую вы положили в 1-й поток памяти, а затем снова копией, когда вы ее переадресовываете. что-то создает мусор быстрее, чем GC может его собрать, или создавая мусор, который не может быть собран, например, не вызывать dispose, или вы работаете со структурой данных inmemory, которая просто не вписывается в пространство IIS позволяет это (что мало, например, 800 Мбайт на запрос) – MatthewMartin
Насколько велик woorkBookstream, когда на 400000 записей (aka свойство Length)? – user957902
Просто дай мне секунду, дайте мне проверить ... – Scorpio