BiffException при чтении листа Excel - PullRequest
12 голосов
/ 25 марта 2011

У меня есть код для чтения из листа 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)

Ответы [ 4 ]

17 голосов
/ 28 марта 2011

Формат xls ( = Excel 2007) состоит из файлов XML в zip-контейнере.

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

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

4 голосов
/ 10 января 2013

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

3 голосов
/ 02 августа 2013

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

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

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

0 голосов
/ 18 января 2017

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

...