Подтвердить что ты не робот

BiffException при чтении листа excel

У меня есть код для чтения с листа Excel, который находится в старом формате (97-2003). Я внес некоторые изменения в данные и закончил листинг Excel 2007. Когда я использовал этот лист xlsx вместо xls-листа, я получаю следующее:

jxl.read.biff.BiffException: Unable to recognize OLE stream
    at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:116)
    at jxl.read.biff.File.<init>(File.java:127)
    at jxl.Workbook.getWorkbook(Workbook.java:268)
    at readexcel.ReadExcel.readContent(ReadExcel.java:50)
    at readexcel.ReadExcel.init(ReadExcel.java:25)
    at readexcel.ReadExcel.main(ReadExcel.java:183)
4b9b3361

Ответ 1

Формат xls (< Excel 2007) состоит из двоичных данных BIFF в контейнере OLE. Формат xlsx ( >= Excel 2007) состоит из файлов XML в zip-контейнере.

API Java Excel использует только первый формат, поэтому он генерирует исключение, если он не встречает контейнер OLE.

Вам нужно ограничить ввод только файлами xls или найти другой инструмент, который обрабатывает оба формата.

Ответ 2

"сохранить как" вашу книгу как "книгу Excel 97-2003" (опция входит в Microsoft Excel 2007), она сохраняет ваш файл в контейнере OLE.

Ответ 3

У меня была такая же проблема. Проект был основан на Maven и побочным эффектом следующей директивы был фильтр XLS файл.

<resources>
        <resource>
            <directory>src/main/resources</directory>
            <filtering>true</filtering>
        </resource>
</resources>

Чистым решением для решения проблемы было определение "config" подпапки и разрешить фильтрацию в этой конкретной папке, включая включение, но не фильтрацию в другие подпапки.

Ответ 4

Я столкнулся с той же проблемой в Eclipse/Selenium и попытался "Сохранить как" 97-2000 (.xls), и он решил мою проблему.