Я пытаюсь получить файл 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 ожидает другой вид кодирования? Любая помощь будет принята с благодарностью. Спасибо!