Потоковая передача рабочей книги ПОИ к потоку вывода сервлета

Я создаю очень большую рабочую книгу ПОИ на моем веб-сервере. При содержании всей рабочей книги в памяти, не масштабируется для нескольких параллельных запросов. Есть ли способ, которым я могу прогрессивно писать рабочую книгу в поток вывода сервлета. Это должно уменьшить время отклика, а также сделать память процесса эффективной.

19
задан The Machine 20 April 2010 в 11:10
поделиться

3 ответа

К сожалению, это невозможно, когда нет средств передачи последовательных данных. Я бы посоветовал поискать другой формат, например CSV или XML. И то, и другое можно выписывать последовательно. Если он поступает из БД, это может быть даже более эффективно, поскольку приличная БД имеет встроенные средства для эффективного экспорта в эти форматы. Вам просто нужно передать байты с одной стороны на другую.

3
ответ дан 30 November 2019 в 05:01
поделиться

Если вы используете JExcel В нем есть образец кода для чтения кода потока в сервлет и обратно. {{1 }} http://jexcelapi.sourceforge.net/resources/faq/

Единственным недостатком этого API является то, что он поддерживает только до Excel 2003 включительно.

Использование POI - Вы не можете создать файл и передать байты файла в выходной поток сервлета?

0
ответ дан 30 November 2019 в 05:01
поделиться

Если вы собираетесь создать Excel 2007 (xslx), вы можете адаптировать подход BigGridDemo.java, как описано здесь: http://web.archive.org/web/ 20110821054135 / http: //www.realdevelopers.com/blog/code/excel

Решение состоит в том, чтобы позволить POI генерировать контейнер xslx только в качестве шаблона и передавать фактические данные электронной таблицы в виде XML в выходной поток zip-архива. Тогда вам решать, как оптимизировать создание XML.

8
ответ дан 30 November 2019 в 05:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: