|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
just_vladimir, Да, бывает, что длина строки ну очень большая и текст уходит за границу экрана, поэтому сделал ограничение на максимальную ширину столбца. Если реальная длина строки больше, то ширина столбца будет установлена на максимальный размер, в противном случае по максимальной длине строки в столбце. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 11:07 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
если это отчёт для печати, то ширина колонок постоянна. Часто уход ширины за A4 вызывает больше проблем при печати, чем какие то вычисления по вписыванию отчёта. Ну и тема пр быстроту вроде, а не про "красивости". "Красивости" умеет быстро полноценный сервер печати (переброс абзацев на страницу и т.д.) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 11:43 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
Petro123, Зачем Excel для печати? Для этого другие, более надёжные, средства есть. А Excel - это посмотреть на экране, посчитать что-нибудь на формулах и т.п. А ширина столбца... ну согласись некрасиво будет если ширина столбца такая, что чтобы прочитать надо два-три экрана вправо-влево крутить. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 12:23 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
Warlock86При тестировании процедуры на запросе, возвращающем около 70 тысяч строк, оказалось, что весь процесс занял примерно 12 часов, из которых собственно выполнение SQL-запроса занимало меньше 20 минут. Подскажите, пожалуйста, есть ли какой-нибудь способ ускорить формирование Excel-файла? GarrickЗачем Excel для печати? да! Одно дело для печати. Другое для формул (подгонять равно). Третье для итогов. Везде решение разное. Топик стартовали для 70 000 строк. Я и подумал - для печати)). ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 12:42 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
а чем хехель не нравится для печати? мне вот недавно задачу поставили - выдирать из базы и делать красивый прайслист. причем первая страница может через форму доп инфа добавляться, 1 строка или 40 строк. хз. пустое место должно быть заполнено таблицей с заголовком из разл наименований. я тупо сделал в екселе шаблон и закрепил заголовок таблицы как заголовок страницы и всё. просто вставляю тело таблицы и нужную инфу а он сам разбивает. теперь задача номер2 - сделать тоже самое при помощи хтмла и жсп. ну да, можно рассчитать количество строк на страницу и вбивать пейджбрейк - оно создает красивый такой документ. НО это всё легко сделать до тех пор пока ты знаешь сколько у тебя строк и сколько на первом листе утебя будет вставлено инфы, и высота строк постоянная. если эти данные начинают плавать - то всё. вешайся. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 13:26 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
lor2рассчитать количество строк на страницу кто в 3-ем тысячелетии решает такую техническую задачу сам? Очень сомнительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 13:33 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
lor2а чем хехель не нравится для печати? Из известных мне форматов файлов только PDF позволяет пользователю однозначно вывести на принтер именно то, что задумал программист. lor2...- то всё. вешайся. Для таких задач есть XSL-FO. Познакомьтесь с Apache FOP например. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 13:46 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
GarrickДля таких задач есть XSL-FO. Познакомьтесь с Apache FOP например. автор70 тысяч строк XSLT-это DOM, там с памятью могут быть всякие ООМ ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 16:01 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
am_sasa, авторXSLT-это DOM, там с памятью могут быть всякие ООМ А если в Excel листы форматировать для печати, то ничего такого не будет? Или там у @lor2 HTML-страница с прайс-листом на пару гигов? OOM всегда можно устроить при желании, никакого DOM для этого не надо. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 16:42 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
am_sasaXSLT-это DOM, там с памятью могут быть всякие ООМ А не SAX ? Не знаю как сейчас, но раньше XSLT-трансформеры на SAX'е делали. IMHO & AFAIK ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 16:46 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
Сейчас Xalan работает через DTM https://xml.apache.org/xalan-j/dtm.html В память грузить XML придется, но overhead должен быть значительно меньше классического DOM. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 16:51 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
Garricklor2а чем хехель не нравится для печати? Из известных мне форматов файлов только PDF позволяет пользователю однозначно вывести на принтер именно то, что задумал программист. lor2...- то всё. вешайся. Для таких задач есть XSL-FO. Познакомьтесь с Apache FOP например. так я по-сути хтмл в пдф и конвертил. действительно здорово всё получается. т.к. имею некоторый опыт верстки всякого табличного хлама в связках жстл-хтмл. и печатается на всех девайсах одинаково. единственное что у меня вызывало затруднение - сказано выше. но это уже охамевшие хочунки заказчика. простой прайс им видите ли не надо на фирменном бланке стандартной форме им надо прайс от юдашкина. по поводу фопа спасибо. гляну. мне лично было бы удобнее дальше генерить документы внутри жсп а потом потоком в айтекст отдавать и пусть он генерит из хтмла готовый пдф. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 19:50 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
Garrickam_sasa, авторXSLT-это DOM, там с памятью могут быть всякие ООМ А если в Excel листы форматировать для печати, то ничего такого не будет? Или там у @lor2 HTML-страница с прайс-листом на пару гигов? OOM всегда можно устроить при желании, никакого DOM для этого не надо. :) нет, что вы. у меня прайсы в среднем до 4000-4500 позиций. это не пару гигов это в районе сотни. килобайт. ) если с фирменными бланками то может чуть больше - не смотрел. но получается реально красиво. если точно знать сколько строк на каждой странице. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.02.2016, 19:53 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
недавно пользовался этим пои. в пределах нескольких тысяч записей вполне быстро сохранял. секунды ... |
|||
:
Нравится:
Не нравится:
|
|||
26.02.2016, 22:33 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
A Serious Man недавно пользовался этим пои. в пределах нескольких тысяч записей вполне быстро сохранял. секунды Может быть. Но когда счёт идёт на десятки тысяч записей, начинает страшно тормозить. В итоге я решил задачу другим способом. В хранимой процедуре формирую XML-файлы, которые сохраняю на жёсткий диск и уже потом с помощью Java запаковываю их в Zip-архив с расширением XLSX. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2016, 10:49 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
Мне кажется встроенная в Oracle Java не очень быстрая. Возможно, банальный перенос на другой app-sever решил-бы проблемы автора. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2016, 11:26 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
Warlock86Но когда счёт идёт на десятки тысяч записей, начинает страшно тормозить. Уточнение: у вас начинает страшно тормозить. В чём и был ваш вопрос. Но виновато не POI. Надо бвло искать свою ошибку. Вы в вашей программе не экономили память, загружая в неё сразу весь набор данных. Возможно есть ещё какие дефекты в программе. Я их не стал искать поскольку вы не отреагировали на моё первоначальное предложение. При правильном программировании POI не замедлится и от десятков тысяч строк, что мной проверено. mayton Мне кажется встроенная в Oracle Java не очень быстрая. Возможно, банальный перенос на другой app-sever решил-бы проблемы автора. Чтобы проблемы были решены, надо программировать правильно. Но сервер приложений тут ни причём. Афтар зачем-то сделал программу в виде хранимой процедуры в Oracle, а они выполняются самой СУБД Oracle без сервера приложений. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.03.2016, 14:28 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
имхо, тут дело не в "построчном" чтении. А в фомировании самого листа excel. У меня сейчас (и даже не в Oracle а просто отдельный софт) экспорт запроса на 432 строки заметное время отномает. т.е. если в любой другой формат, хоть html хоть в scv и прочее - доля секунды, а в Excel минуту наверно (не засекал но видимо долго). На эту тему набрел в поисках ответа "как ускорить экпорт в excel org.apache.poi". Помню, в другой среде, существенно было быстрей локально формировать массив а потом этот масив вставлять на лист, может, думал и тут что-то похожее есть. А насчет "70 тысяч строк" - это не для excel задача (видимо забыли, что еще не так давно, было ограничение у него на 32 000 :D ). Да и не для печати. Но, это уже не к теме. Так есть варианты ускорить формирование листа? Не по строчно записывать а массивом (как пример) ? ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 10:26 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
Время открытие книги: 0,117 Время формирование заголовка: 0,006 Время формирование данных: 53,548 сек, строк: 436 колонок: 9 Время записи файла: 0,041 ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 11:15 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
stells2, Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 11:46 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
Там есть вторая имплементация XSSFWorkbook. Для xml-формата. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 12:13 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
maytonТам есть вторая имплементация XSSFWorkbook. Для xml-формата. думаете, что вторая имплементация даст 50+секунд на формирование жалких 500 строк?:) ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 12:22 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
Я ничего не думаю. Я просто говорю что надо тестить обе. Там еще и zip-архивация идет. Мало-ли какие еще гвозди и болты забиты. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 12:26 |
|
Java + Apache POI. Очень долго формируется Excel-документ
|
|||
---|---|---|---|
#18+
Озверинstells2, Код: sql 1.
Запись данных : 0,525 сек Записб файла: 0,031 сек Да.. там стояло sheet.autoSizeColumn(i); в цикле записи данных. Вынес в отдельный цикл после записи данных, результат выше :) Просто, форматированный вывод. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.03.2019, 13:12 |
|
|
start [/forum/topic.php?fid=59&msg=39179009&tid=2121424]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
49ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
54ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 163ms |
0 / 0 |