Вызов HSSF-сериализатора
Я должен написать очень большой файл XLS, я попробовал Apache POI, но он просто занимает слишком много памяти для использования.
Я быстро просмотрел Stackru и заметил несколько ссылок на проект Cocoon и, в частности, на HSSFSerializer. Похоже, что это более эффективный способ записи файлов XLS на диск (из того, что я прочитал, исправьте меня, если я ошибаюсь!).
Меня интересует описанный здесь вариант использования: http://cocoon.apache.org/2.1/userdocs/xls-serializer.html. Я уже написал код для записи файла в Gnumeric
формат, но я не могу найти, как вызвать HSSFSerializer
преобразовать его в XLS.
При дальнейшем чтении кажется, что проект Cocoon - это своего рода веб-фреймворк. Я вполне могу лаять не на то дерево, но:
Не могли бы вы привести пример чтения в файл, запустив HSSFSerializer
на нем и записи этого вывода в другой файл? Не понятно, как это сделать из документации.
2 ответа
Мой друг, HSSF сериализатор является частью POI. Вы просто устанавливаете определенные атрибуты в xml для сериализации (но вам нужен целый процесс для его создания). Кроме того, установка всего конвейера с использованием этой инфраструктуры только для создания XLS кажется странной, поскольку она меняет архитектуру приложения. Your Это ваше решение?
Из документов:
Альтернативный способ создания электронной таблицы - через сериализатор Cocoon (но вы все равно будете использовать HSSF косвенно). С Cocoon вы можете сериализовать любой источник данных XML (который может быть, например, страницей ESQL, выводимой на SQL), просто применяя таблицу стилей и назначая сериализатор.
Если проблема с памятью, попробуйте XSSF или SXSSF в POI.
Я не знаю, означает ли вы "XLS" конкретную, до Office 2007, версию этого "Ужасного формата электронных таблиц" (именно это означает HSSF), или что-нибудь, что вы можете открыть с помощью последней версии MS Office, OpenOffice, ...
Таким образом, в зависимости от требований вашего клиента (то есть тех, которые откроют ваш файл Excel), может быть доступен другой вариант: создание файла .XLSX.
Все сводится к созданию XML-файла с правильной грамматикой, которая кажется подходящей для вашей ситуации, поскольку вы, кажется, уже сделали это с форматом файлов на основе Gnumeric XML без технических проблем и без проблем с нехваткой памяти.
Обратите внимание, что существуют другие форматы электронных таблиц на основе XML, которые Excel и другие клиенты смогут использовать. Возможно, вы захотите покопаться в открытых форматах файлов документов.
Что касается того, чтобы использовать Apache Cocoon или что-то еще:
- Cocoon может быть уверенным хозяином обработки XSL; Пакетная обработка (Cocoon CLI) доступна, если вам требуется Cocoon, но вы не хотите, чтобы он работал как веб-приложение (хотя, насколько я помню, функция CLI была нарушена в последних сборках серии 2.1); и Cocoon поставляется с множеством функций и технологий, которые могут удовлетворить дальнейшие требования.
- Cocoon может быть излишним, если он просто приступит к выполнению XSL-преобразования, для которого есть множество хорошо известных и легких инструментов, из которых вы можете выбрать.