|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
Добрый день, коллеги. тулз. Java Swing + JDBC + Apache POI. Предыстория: Делал как-то формирование Excel через poi со слиянием ячеек с одинаковыми значениями в колонках + подсчет подытогов по определенным колонкам. Данные из БД. Однажды у клиента вылезло исключение java heap spase.... В итоге подсказали что память (не стековая) засерается и нужно использовать потоковоые методы формирования Excel. Проблема: Начал делать как сказали, формировал Excel через Stream`инг. Но после наполнения таблицы я не могу пройтись заново по ней (чтобы вычислить что слиять, где втавить строку подитогов и т.п.), потому что часть данных уже на диске. Вот например Oracle BI у него отчет после выполнения отрисовывается в браузере и экспортируется в Excel как мне надо. И я знаю что BI на Java. Тут конечно закрадывается мысль о том, что на серваке то памяти по более будет и поэтому там не было таких исключений. Кто что думает на эту тему? Как не просто сформировать большой Excel, но и преобразовать его в более понятный (для бухгалтерии) вид? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 08:41 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMVто что думает на эту тему? Как не просто сформировать большой Excel, но и преобразовать его в более понятный (для бухгалтерии) вид Думаю, что создавать простую плоскую таблицу несложно любым инструментом, а преобразовывать в какую-то вычурную форму нужно самим Excel-ем. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 08:52 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
Лысый дядька, +1 У меня юзверь сам делал шаблон и форматировал одну строку с шапкой, а я просто копировал ее на нужное количество) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 08:55 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMV, Поточный метод формирования Excel файла не подразумевает возможности "вернуться" к началу файла, что бы что-то там исправить. Движение потока только в одну сторону. Все необходимые промежуточные результаты, надо высчитывать самостоятельно, результаты записывать в нужные ячейки по мере их "появления" в потоке, для форматирования использовать заранее подготовленные (в начале потока) стили. Пример: The simple helper for create Microsoft Excel workbook via Apache POI ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 10:39 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMV.....Тут конечно закрадывается мысль о том, что на серваке то памяти по более будет и поэтому там не было таких исключений. .... Дочитав до этого места, закрадывается мысль, что окно с браузером можно закрывать. 1. Памяти-то сколько Java машине выделено? Увеличивать не пробывали? 2. Профилировшиком посмотреть, что находится в памяти не пробывали? Возможно у Вас какой нибудь resource leak происходит. etc.... У меня который год в подполе происходит подземный стук. Объясните, пожалуйста, как он происходит ( C ) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 10:51 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
Leonid Kudryavtsev, Ну без язвительных комментариев в стиле "у кого пис...н больше" считай день в пустую! автор1. Памяти-то сколько Java машине выделено? Увеличивать не пробывали? Побывал! Но если бы вы внимательно прочитали, но поняли что мое решение остановилось на использовании поточного формирования, где соответственно проблемы с памятью отлетают. автор2. Профилировшиком посмотреть, что находится в памяти не пробывали? Возможно у Вас какой нибудь resource leak происходит. etc.... Этим я занялся сразу как начал получать исключения. И то что память начала засераться именно в либах POI, мне как бы мало помогло. А после, я полез гуглить, где сразу же наткнулся на посылы использовать поточные методы, т.к. они появились, а раньше их не было. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 11:10 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMVПобывал! Но если бы вы внимательно прочитали, но поняли что мое решение остановилось на использовании поточного формирования, где соответственно проблемы с памятью отлетают. Зато вы создали новый топик с новой проблемой. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 11:54 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMV, Теперь можно вернуться к старому методу и еще методам X, Y, Z. В первом разобраться с памятью. Сколько нужно и можно ли увеличить. Ну и другие советы отработать. В том числе использование готовых отчетных серверов по взрослому. Скрин сложного отчета дайте. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 11:59 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
Petro123, Ну со скрином проблемы, точнее могут быть. Начальство увидит по бошке даст. Могу сказать что файл получается приблизительно 35 колонок, а строк когда как, 1 000 - 50 000. Клиенты на которых выполняются отчеты разные, где-то 1 гиг, где то 4 гига оперативы. Параметры VM: -Xms512m -Xmx4096m. Но это мало поможет, если у клиента 1-2 гига, а отчет большой. Я думал может через XML уже сделать (xslt), но как то не перфекционно пользователю давать xml. Я просто не понимаю, че они так не продумали. У меня самописный ДатаСет может хранить это все в памяти, а POI нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 13:19 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
Объединение ячеек в POI происходит через метод: Код: java 1.
Вот у меня 5 000 строк. В первой колонке 2 500 ячеек имеют одно и тоже значение, и остальные 2 500 другое и тоже значение. т.е. Код: java 1.
и Код: java 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 13:25 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMVНачальство увидит по бошке даст.это отмаз? В гугле поиске нет похожего? Докторская? Нобелевская? .. Почему не сделать шаблоном как я выше писал? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 13:37 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
Petro123, Я хочу сделать некий визард. Сейчас у меня так: 1. Программист определяет отчет как выгрузка Excel. 2. Заходит в некий визард, сует туда SQL, нажимает кнопку "Проверить" 3. JDBC достает метаданные и отображает их на JTable 4. Пользователь может указать в JTable заголовок поля, тип, ширину, суммировать или нет, и если да, то по каким группам колонок. 5. Сохраняет. Далее конечный пользователь запускает отчет с параметрами и получает Excel. Из вышесказанного вы должны понять, что эти отчеты не типовые, скорее аналитические. В них нет преамбул и проч. дополнений. Обычная выгрузка, но с подытогами и объеденеными ячейками. Это должно быть так, потому, что - это просто с точки зрения использования как для разработчика отчета, так и для бухгалтера. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 14:12 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 14:16 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
так, наверное, будет правильнее https://community.jaspersoft.com ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 14:17 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
Garrick, Уже =) Но вот хочу выгрузкой SQL -> Excel ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 14:22 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMV, Отчет japserReport можно сразу сохранять в Excel. А так, ODBC + VBA + Excel java-не нужно ;-) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 14:31 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMVЭто должно быть так, потому, что - это просто с точки зрения использования как для разработчика отчета, так и для бухгалтера. я же сказал как еще проще. Вы ноль реакции. Юзверь шаблон правит в экселе а не в jTable. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 14:40 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
Petro123, Хорошо, неправильно выразился: - привычнее. А вообще я не понимаю причем тут шаблон? Шаблон делает разметку, а разметка у меня простая, она сама генерится в виде обычных столбцов. В шаблоне можно как то задать правила объединения ячеек? или вставки строк подытогов для групп? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 14:50 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
mad_nazgul, Да дело не в том чтобы сразу в Excel, даже пускай предпросмотр будет. Просто отчет в Jaspere нужно все равно рисовать. А тут вариант простой выгрузки с некоторыми атрибутами. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 14:52 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMVPetro123, В шаблоне можно как то задать правила объединения ячеек? или вставки строк подытогов для групп? Ну так а формулы в экселе нафига придуманы? Это если про макросы молчать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 15:07 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
Лысый дядькаAndronovMVPetro123, В шаблоне можно как то задать правила объединения ячеек? или вставки строк подытогов для групп? Ну так а формулы в экселе нафига придуманы? Это если про макросы молчать. +1 Аффтар, ты первый раз эксель видишь? Юзверь пишет формула СУММ в ячейку ИТОГО. Ты при копировании автоматом формулу проставляешь по колонке. Итоги сдвигаются вниз красным и жирным. В коде ячейка.цвет = red нигде не пишем. Программиста юзверь не зовет. Дизайнер jTable не делаем. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 15:41 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMVЯ хочу сделать некий визарднет. Лучше так: Я хочу собственноручный, наколенный, велосипедный генератор отчетов. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 15:45 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMVПросто отчет в Jaspere нужно все равно рисовать. А тут вариант простой выгрузки с некоторыми атрибутами.не понял. Выше скрины ведь все окошки рукописные? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 15:51 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
Petro123, 1. У вас есть реализация, хотя бы простейшая своего решения? 2. Про велосипеды и проч. субъективное мнение можно разговаривать, если есть однозначное и самое простое решение, а не всего лишь 1 из возможных. 3. Окошки и дизайн отчета разные вещи. То где отображается результат отчета JasperReports это рукописная система, но шаблон отчета сделан в JasperStudio, где кстати похожий "наколенный велосипед" под название "редактор SQL". В рукописной системе пользователь лишь указывает параметры выполнения отчета. В нашей системе, если нужен типовой отчет типа УПД, он рисуется в Jaspere и регится в системе, а если нужны сводные данные или аналитика, то выгрузка в Excel. Вообще я так и знал, что тема начнет плавно утекать в сторону альтернативных решений и фраз типа не "изобретай велосипед", т.к. отвечающим тяжело понять многих аспектов, в том числе область применения, и даже такие вещи как есть бухгалтер, тётя Мотя и вот ей надо именно так, именно здесь, даже если это уже объективно сложнее делать. А также, что есть определенный стек и прикручивать лишнее никому не захочется и даже мне. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 16:53 |
|
И опять Apache POI. Потоковое создание excel со слиянием ячеек и подытогами.
|
|||
---|---|---|---|
#18+
AndronovMVУ вас есть реализация, хотя бы простейшая своего решения? Решение чего? Скопировать всю строку #2 с получением строки #3 и вторую заполнить ячейки? 2. Хотя бы с jasper решением сравни нормально. У тебя скрин простейшего отчета. 3. Ты выше сам ушел от решения ошибки по памяти в сторону стримов. Разве нет? А мы типо не имеем право? ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2019, 17:14 |
|
|
start [/forum/topic.php?fid=59&msg=39769544&tid=2121498]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
39ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
61ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 156ms |
0 / 0 |