Как отобразить большое количество строк (порядка 50 КБ) в отчетах BIRT Excel? - PullRequest
0 голосов
/ 07 октября 2018

Я использую среду выполнения BIRT 4.8.0 в Java-проекте для генерации отчетов Excel.Отчет Excel содержит 1 тыс. Столбцов и может содержать от 10 до 50 тыс. Строк (результат 1 запроса, сопоставление с 1 таблицей).Я использую spudsoft ExcelEmitter для рендеринга статических отчетов Excel.

Источник данных: соединение Impala jdbc, использующее 1 набор данных с 1 запросом

Проблема заключается в том, что требуется от 6 до 7 ГБ пространства кучи (java) только для визуализации 10k строк в этом отчете, так чтозагрузить все в память, а затем записать это в файл.

Есть ли способ уменьшить объемы памяти (предсказуемое использование пространства кучи, предпочтительно до 3 ГБ) при рендеринге листов Excel (такие опции, как разбиение на страницы результатов запроса, рендерингфайл по частям и т.д)?

Ответы [ 2 ]

0 голосов
/ 05 апреля 2019

Я решил это с новой версией spudsoft emitter.Это изменяет Apache Poi с xssf на sxssf:

ExcelEmitter.ExtractMode Экспериментальная функция!При значении true эмиттер должен работать быстрее для файлов XLSX, но с ограниченным набором функций:

  • Изображения будут опущены.
  • Объединенные ячейки недопустимы.
  • Верхний и нижний колонтитулы структуры не поддерживаются.См. ExcelEmitter.StructuredHeader.

https://www.eclipse.org/forums/index.php/m/1804253/#msg_1804253

0 голосов
/ 05 декабря 2018

Мне удалось сгенерировать Excel для большого набора данных (порядка 50 тыс. Строк и 1 тыс. Столбцов), напрямую используя Apache POI Потоковые API . API Aspose - еще один хороший инструмент для этого.

Используя потоковые API POI, вы можете визуализировать Excel с порядком 50 тыс. Строк, 1 тыс. Столбцов примерно за минуту или два при пиковой загрузке ОЗУ менее 2 ГБ.,

Таким образом, если вы расширяете Spudsoft Excel Emitter для использования потоковых API POI, то это также может быть обработано с помощью BIRT.

...