Я создаю очень большую рабочую книгу ПОИ на моем веб-сервере. При содержании всей рабочей книги в памяти, не масштабируется для нескольких параллельных запросов. Есть ли способ, которым я могу прогрессивно писать рабочую книгу в поток вывода сервлета. Это должно уменьшить время отклика, а также сделать память процесса эффективной.
К сожалению, это невозможно, когда нет средств передачи последовательных данных. Я бы посоветовал поискать другой формат, например CSV или XML. И то, и другое можно выписывать последовательно. Если он поступает из БД, это может быть даже более эффективно, поскольку приличная БД имеет встроенные средства для эффективного экспорта в эти форматы. Вам просто нужно передать байты с одной стороны на другую.
Если вы используете JExcel В нем есть образец кода для чтения кода потока в сервлет и обратно. {{1 }} http://jexcelapi.sourceforge.net/resources/faq/
Единственным недостатком этого API является то, что он поддерживает только до Excel 2003 включительно.
Использование POI - Вы не можете создать файл и передать байты файла в выходной поток сервлета?
Если вы собираетесь создать Excel 2007 (xslx), вы можете адаптировать подход BigGridDemo.java, как описано здесь: http://web.archive.org/web/ 20110821054135 / http: //www.realdevelopers.com/blog/code/excel
Решение состоит в том, чтобы позволить POI генерировать контейнер xslx только в качестве шаблона и передавать фактические данные электронной таблицы в виде XML в выходной поток zip-архива. Тогда вам решать, как оптимизировать создание XML.