Как мне преобразовать двоичную строку .xlsx во входной поток в Java? - PullRequest
0 голосов
/ 08 июля 2019

Я пытаюсь получить файл Excel из ответа HTTP, который затем могу прочитать, используя Apache POI, чтобы преобразовать его в строку CSV. Я столкнулся с проблемой при попытке преобразовать тело ответа во входной поток, который можно использовать для создания рабочей книги с использованием POI. Тело ответа выглядит так:

PK     ! bîh^     [Content_Types].xml ¢(  Ã0E÷HüCä-Jܲ@5í‚Ç*Q>Àēƪc[žiiÿž‰ûB¡j7±ÏÜ{2ñÍh²nm¶‚ˆÆ»R‹ÈÀU^7/ÅÇì%¿’rZYï @1__f› ˜q·ÃR4DáAJ¬h>€ãÚÇVßƹªZ¨9ÈÛÁàNVÞ8Ê©ÓãÑÔji){^óã-I‹"{Üv^¥P!XS)bR¹rú—K¾s(¸3Õ`cÞ0†½ÝÎß»¾7M4²©ŠôªZÆk+¿|\|z¿(Ž‹ôPúº6h_-[ž@!‚ÒØ Pk‹´­2nÏ}Ä?£LËð ...

Как правильно преобразовать это в байтовый массив / входной поток?

В настоящее время я просто создаю поток ввода, выполняя это:

InputStream baseIO = new ByteArrayInputStream(encryptedBaseResp.getResponse().getBytes());

Затем передаем это в POI для создания рабочей книги следующим образом:

Workbook baseRespWorkbook = WorkbookFactory.create(baseIO);

В строке выше выдается следующая ошибка:

java.util.zip.ZipException: invalid distance too far back

С трассировкой стека:

java.io.IOException: Failed to read zip entry source
    at org.apache.poi.openxml4j.opc.ZipPackage.<init>(ZipPackage.java:103)
    at org.apache.poi.openxml4j.opc.OPCPackage.open(OPCPackage.java:324)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:184)
    at org.apache.poi.ss.usermodel.WorkbookFactory.create(WorkbookFactory.java:149)
...

Кажется, что-то не так с тем, как я преобразовываю эту строку ответа в байтовый массив. Может быть, POI ожидает другой вид кодирования? Любая помощь будет принята с благодарностью. Спасибо!

...