записей в Excel так, чтобы сервер не ложился (могут быть десятки/сотни тысяч) и возвращать юзеру всё это одним файлом. Можно разделять на страницы, если требуется.
Сейчас работает с использованием POI : достали из базы всю пачку разом, создали workbook, заполнили в него строки, вернули byteArray. На малом кол-ве записей всё ок, на большом - отправляемся отдыхать с переполнением памяти. Кто-то встречался с таким, есть варианты, как это дело сделать менее болезненно? Предлагали как-то по частям отправлять на фронт, по мере заполнения респонса, но я не совсем понял(
Можно как вариант отправлять письмо юзеру о готовности сформированного файла и ссылкой на скачивание.
как вариант, спасибо
Есть либа fastexcel, а на деле стоит отложенно отдавать результат и уведомлять пользователя о результате. Результат писать в файловую систему с протуханием результата через N времени
Кажется для таких случаев в poi есть SXSSFWorkbook, который держит в памяти только батч данных Streaming version of XSSFWorkbook implementing the "BigGridDemo" strategy. This allows to write very large files without running out of memory as only a configurable portion of the rows are kept in memory at any one time. You can provide a template workbook which is used as basis for the written data. See https://poi.apache.org/spreadsheet/how-to.html#sxssf for details.
Он и используется, но все равно не хватает. Особенно если не дождаться экспорта и ткнуть по кнопке ещё разок)
Обсуждают сегодня