powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
25 сообщений из 36, страница 1 из 2
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769485
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день, коллеги.

тулз. Java Swing + JDBC + Apache POI.

Предыстория:
Делал как-то формирование Excel через poi со слиянием ячеек с одинаковыми значениями в колонках + подсчет подытогов по определенным колонкам. Данные из БД. Однажды у клиента вылезло исключение java heap spase.... В итоге подсказали что память (не стековая) засерается и нужно использовать потоковоые методы формирования Excel.

Проблема:
Начал делать как сказали, формировал Excel через Stream`инг. Но после наполнения таблицы я не могу пройтись заново по ней (чтобы вычислить что слиять, где втавить строку подитогов и т.п.), потому что часть данных уже на диске.

Вот например Oracle BI у него отчет после выполнения отрисовывается в браузере и экспортируется в Excel как мне надо. И я знаю что BI на Java. Тут конечно закрадывается мысль о том, что на серваке то памяти по более будет и поэтому там не было таких исключений.

Кто что думает на эту тему? Как не просто сформировать большой Excel, но и преобразовать его в более понятный (для бухгалтерии) вид?
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769486
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMVто что думает на эту тему? Как не просто сформировать большой Excel, но и преобразовать его в более понятный (для бухгалтерии) вид
Думаю, что создавать простую плоскую таблицу несложно любым инструментом, а преобразовывать в какую-то вычурную форму нужно самим Excel-ем.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769488
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лысый дядька,
+1
У меня юзверь сам делал шаблон и форматировал одну строку с шапкой, а я просто копировал ее на нужное количество)
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769538
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMV,

Поточный метод формирования Excel файла не подразумевает возможности "вернуться" к началу файла, что бы что-то там исправить. Движение потока только в одну сторону. Все необходимые промежуточные результаты, надо высчитывать самостоятельно, результаты записывать в нужные ячейки по мере их "появления" в потоке, для форматирования использовать заранее подготовленные (в начале потока) стили. Пример: The simple helper for create Microsoft Excel workbook via Apache POI
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769544
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMV.....Тут конечно закрадывается мысль о том, что на серваке то памяти по более будет и поэтому там не было таких исключений.
....
Дочитав до этого места, закрадывается мысль, что окно с браузером можно закрывать.

1. Памяти-то сколько Java машине выделено? Увеличивать не пробывали?
2. Профилировшиком посмотреть, что находится в памяти не пробывали? Возможно у Вас какой нибудь resource leak происходит.
etc....

У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит ( C )
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769554
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Leonid Kudryavtsev,

Ну без язвительных комментариев в стиле "у кого пис...н больше" считай день в пустую!

автор1. Памяти-то сколько Java машине выделено? Увеличивать не пробывали?
Побывал! Но если бы вы внимательно прочитали, но поняли что мое решение остановилось на использовании поточного формирования, где соответственно проблемы с памятью отлетают.

автор2. Профилировшиком посмотреть, что находится в памяти не пробывали? Возможно у Вас какой нибудь resource leak происходит.
etc....
Этим я занялся сразу как начал получать исключения. И то что память начала засераться именно в либах POI, мне как бы мало помогло. А после, я полез гуглить, где сразу же наткнулся на посылы использовать поточные методы, т.к. они появились, а раньше их не было.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769572
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMVПобывал! Но если бы вы внимательно прочитали, но поняли что мое решение остановилось на использовании поточного формирования, где соответственно проблемы с памятью отлетают.
Зато вы создали новый топик с новой проблемой.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769574
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMV,
Теперь можно вернуться к старому методу и еще методам X, Y, Z.
В первом разобраться с памятью. Сколько нужно и можно ли увеличить.
Ну и другие советы отработать.
В том числе использование готовых отчетных серверов по взрослому.
Скрин сложного отчета дайте.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769630
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Ну со скрином проблемы, точнее могут быть. Начальство увидит по бошке даст.
Могу сказать что файл получается приблизительно 35 колонок, а строк когда как, 1 000 - 50 000.
Клиенты на которых выполняются отчеты разные, где-то 1 гиг, где то 4 гига оперативы.
Параметры VM: -Xms512m -Xmx4096m. Но это мало поможет, если у клиента 1-2 гига, а отчет большой.

Я думал может через XML уже сделать (xslt), но как то не перфекционно пользователю давать xml.

Я просто не понимаю, че они так не продумали. У меня самописный ДатаСет может хранить это все в памяти, а POI нет.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769635
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Объединение ячеек в POI происходит через метод:
Код: java
1.
sheet.addMergedRegion(rowFrom,rowTo,colFrom,colTo);


Вот у меня 5 000 строк. В первой колонке 2 500 ячеек имеют одно и тоже значение, и остальные 2 500 другое и тоже значение.
т.е.
Код: java
1.
sheet.addMergedRegion(1,2499,1,1);


и
Код: java
1.
sheet.addMergedRegion(2500,5000,1,1);
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769646
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMVНачальство увидит по бошке даст.это отмаз?
В гугле поиске нет похожего? Докторская? Нобелевская?
..
Почему не сделать шаблоном как я выше писал?
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769659
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

Я хочу сделать некий визард. Сейчас у меня так:
1. Программист определяет отчет как выгрузка Excel.
2. Заходит в некий визард, сует туда SQL, нажимает кнопку "Проверить"
3. JDBC достает метаданные и отображает их на JTable
4. Пользователь может указать в JTable заголовок поля, тип, ширину, суммировать или нет, и если да, то по каким группам колонок.
5. Сохраняет.

Далее конечный пользователь запускает отчет с параметрами и получает Excel.
Из вышесказанного вы должны понять, что эти отчеты не типовые, скорее аналитические. В них нет преамбул и проч. дополнений. Обычная выгрузка, но с подытогами и объеденеными ячейками.
Это должно быть так, потому, что - это просто с точки зрения использования как для разработчика отчета, так и для бухгалтера.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769663
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMV,

Jasper Report не пробовали?
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769664
Garrick
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так, наверное, будет правильнее https://community.jaspersoft.com
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769665
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Garrick,

Уже =)
Но вот хочу выгрузкой SQL -> Excel
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769668
mad_nazgul
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMV,

Отчет japserReport можно сразу сохранять в Excel.
А так, ODBC + VBA + Excel java-не нужно ;-)
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769677
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMVЭто должно быть так, потому, что - это просто с точки зрения использования как для разработчика отчета, так и для бухгалтера.

я же сказал как еще проще. Вы ноль реакции.
Юзверь шаблон правит в экселе а не в jTable.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769682
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,
Хорошо, неправильно выразился: - привычнее.
А вообще я не понимаю причем тут шаблон? Шаблон делает разметку, а разметка у меня простая, она сама генерится в виде обычных столбцов. В шаблоне можно как то задать правила объединения ячеек? или вставки строк подытогов для групп?
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769683
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
mad_nazgul,

Да дело не в том чтобы сразу в Excel, даже пускай предпросмотр будет. Просто отчет в Jaspere нужно все равно рисовать. А тут вариант простой выгрузки с некоторыми атрибутами.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769693
Лысый дядька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMVPetro123,
В шаблоне можно как то задать правила объединения ячеек? или вставки строк подытогов для групп?
Ну так а формулы в экселе нафига придуманы? Это если про макросы молчать.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769713
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лысый дядькаAndronovMVPetro123,
В шаблоне можно как то задать правила объединения ячеек? или вставки строк подытогов для групп?
Ну так а формулы в экселе нафига придуманы? Это если про макросы молчать.
+1
Аффтар, ты первый раз эксель видишь?
Юзверь пишет формула СУММ в ячейку ИТОГО.
Ты при копировании автоматом формулу проставляешь по колонке.
Итоги сдвигаются вниз красным и жирным.
В коде ячейка.цвет = red нигде не пишем.
Программиста юзверь не зовет.
Дизайнер jTable не делаем.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769717
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMVЯ хочу сделать некий визарднет.
Лучше так:
Я хочу собственноручный, наколенный, велосипедный генератор отчетов.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769721
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMVПросто отчет в Jaspere нужно все равно рисовать. А тут вариант простой выгрузки с некоторыми атрибутами.не понял.
Выше скрины ведь все окошки рукописные?
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769759
AndronovMV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Petro123,

1. У вас есть реализация, хотя бы простейшая своего решения?
2. Про велосипеды и проч. субъективное мнение можно разговаривать, если есть однозначное и самое простое решение, а не всего лишь 1 из возможных.
3. Окошки и дизайн отчета разные вещи. То где отображается результат отчета JasperReports это рукописная система, но шаблон отчета сделан в JasperStudio, где кстати похожий "наколенный велосипед" под название "редактор SQL". В рукописной системе пользователь лишь указывает параметры выполнения отчета.

В нашей системе, если нужен типовой отчет типа УПД, он рисуется в Jaspere и регится в системе, а если нужны сводные данные или аналитика, то выгрузка в Excel.

Вообще я так и знал, что тема начнет плавно утекать в сторону альтернативных решений и фраз типа не "изобретай велосипед", т.к. отвечающим тяжело понять многих аспектов, в том числе область применения, и даже такие вещи как есть бухгалтер, тётя Мотя и вот ей надо именно так, именно здесь, даже если это уже объективно сложнее делать. А также, что есть определенный стек и прикручивать лишнее никому не захочется и даже мне.
...
Рейтинг: 0 / 0
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
    #39769769
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AndronovMVУ вас есть реализация, хотя бы простейшая своего решения?
Решение чего?
Скопировать всю строку #2 с получением строки #3 и вторую заполнить ячейки?
2. Хотя бы с jasper решением сравни нормально. У тебя скрин простейшего отчета.
3. Ты выше сам ушел от решения ошибки по памяти в сторону стримов. Разве нет?
А мы типо не имеем право?
...
Рейтинг: 0 / 0
25 сообщений из 36, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]