Your InputStream was neither an OLE2 stream, nor an OOXML stream
java.lang.IllegalArgumentException: Your InputStream was neither an OLE2 stream, nor an OOXML stream
Я предполагаю, что вы используете Workbook Factory ИЛИ другой входной файл формата и другой тип рабочей книги. Эта ошибка обычно появляется, когда не удается прочитать тип файла. Apache POI не проверяет расширение файла. Если вы откроете его в текстовом редакторе, вы увидите, что вместо этого он будет в другом формате. Или вы можете инициализировать тип рабочей книги как HSSF или XSSF перед использованием Workbook Factory.
Более простое решение — открыть файл с помощью Microsoft Excel и сохранить его как другой файл (используя параметр Файл>Сохранить как из Microsoft Excel> Меню).
Workbook Factory не проверяет расширение файла, вместо этого проверяет тип файла MIME. В основном excel работает с разными файлами (например, файлы, созданные с помощью сторонних приложений, версия excel 2003), но Apache POI очень специфичен.
PushbackInputStream
добавляет функциональность «отправить» или «непрочитать» в другой входной поток. Это позволяет вам прочитать несколько байтов вперед, чтобы увидеть, что будет дальше, прежде чем вы сможете определить, как интерпретировать текущий байт.
Если вы не используете Workbook Factory, я думаю, PushbackInputStream
— единственная альтернатива.
Если вы можете поделиться кодом здесь, я могу проверить его и подтвердить.
person
Tejus Prasad
schedule
23.04.2014