|
|
|
Java->poi->big Workbook->oracle(blob) и обратно
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги! У меня выполняется запрос в результате которого получается большой объем данных (много строк). Полученные данные я запихиваю в Excel - SXSSFWorkbook . Далее всю книгу превращаю в ByteArrayOutputStream и запихиваю в BLOB. В итоге у меня получается BLOB размером 92 824 391 bytes (~100 mb) Далее, по кнопке я читаю BLOB, т.е. получаю ByteArrayInputStream и мне нужно превратить этот массив в Workbook , чтобы сохранить его на комп. и у меня этого не получается. java.lang.OutOfMemoryError: Java heap space Пробовал разными способами: 1. XSSFWorkbook book = new XSSFWorkbook(bais); 2. Workbook workbook = WorkbookFactory.create(bais); 3. OPCPackage opcPackage = OPCPackage.open(bais); 4. POIFSFileSystem fsis = new POIFSFileSystem(bais); // в этом случает, другое исключение (org.apache.poi.poifs.filesystem.OfficeXmlFileException: The supplied data appears to be in the Office 2007+ XML. You are calling the part of POI that deals with OLE2 Office Documents. You need to call a different part of POI to process this data (eg XSSF instead of HSSF)) Может кто знает как сделать хорошо? ) Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 11:37 |
|
||
|
Java->poi->big Workbook->oracle(blob) и обратно
|
|||
|---|---|---|---|
|
#18+
AndronovMVДалее, по кнопке я читаю BLOB, т.е. получаю ByteArrayInputStream и мне нужно превратить этот массив в Workbook , чтобы сохранить его на комп. и у меня этого не получается. Здесь попахивает заблуждением. Чтобы сохранить данные из BLOB в файл совсем не обязательно эти данные парсить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 11:45 |
|
||
|
Java->poi->big Workbook->oracle(blob) и обратно
|
|||
|---|---|---|---|
|
#18+
AndronovMV... java.lang.OutOfMemoryError: Java heap space ... Увеличить память для JVM не предлагать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 11:46 |
|
||
|
Java->poi->big Workbook->oracle(blob) и обратно
|
|||
|---|---|---|---|
|
#18+
Blazkowicz...Здесь попахивает заблуждением. Чтобы сохранить данные из BLOB в файл совсем не обязательно эти данные парсить. ну и да, как бы вообще одной функцией делает (если взять Apache IOUtils) https://commons.apache.org/proper/commons-io/javadocs/api-2.5/org/apache/commons/io/IOUtils.html#copy(java.io.InputStream, java.io.OutputStream) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 11:51 |
|
||
|
Java->poi->big Workbook->oracle(blob) и обратно
|
|||
|---|---|---|---|
|
#18+
На стек оверфлов полно тем и ответов по Subj. Только остается непонятно, что же действительно нужно автору ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 12:03 |
|
||
|
Java->poi->big Workbook->oracle(blob) и обратно
|
|||
|---|---|---|---|
|
#18+
AndronovMV, Делай эксель файл только на выходе клиенту. Не сохраняй его в базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 13:00 |
|
||
|
Java->poi->big Workbook->oracle(blob) и обратно
|
|||
|---|---|---|---|
|
#18+
Leonid Kudryavtsev, Blazkowicz, Да, спасибо получилось через IOUtils.copy. Просто я записывал книгу через SXSSFWorkbook.write(<byte array>) поэтому подумал что он свой, специфичиский образ делает. Соответственно ожидал что и чтение также должно происходить (сначало превращаем обратно в книгу, а потом сохраняем в файл) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2018, 13:11 |
|
||
|
|

start [/forum/topic.php?desktop=1&fid=59&tid=2122187]: |
0ms |
get settings: |
11ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
162ms |
get topic data: |
13ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
2ms |
| others: | 246ms |
| total: | 501ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...