阅读excel表时出现BiffException

时间:2011-03-25 05:16:19

标签: excel jxl

我有一个代码可以从excel表中读取旧格式(97-2003)。我对数据进行了一些更改,最终获得了2007格式的excel表。当我使用这张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 个答案:

答案 0 :(得分:17)

xls格式(&lt; Excel 2007)由OLE容器中的二进制BIFF数据组成。 xlsx格式(&gt; = Excel 2007)由zip容器中的XML文件组成。

Java Excel API仅处理第一种格式,因此在不遇到OLE容器时会抛出异常。

您需要将输入限制为仅限xls文件,或者找到另一种处理这两种格式的工具。

答案 1 :(得分:4)

“另存为”您的工作簿为“Excel 97-2003工作簿”(选项在Microsoft Excel 2007中提供),它将您的文件保存在OLE容器中。

答案 2 :(得分:3)

我遇到了同样的麻烦。 Project是基于Maven的,以下指令的副作用是过滤XLS文件。

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

清理解决方案是定义子文件夹“config”并允许对此特定文件夹进行过滤,同时包括但不过滤其他子文件夹。

答案 3 :(得分:0)

我在Eclipse / Selenium中面临同样的问题并尝试“另存为”97-2000(.xls)并解决了我的问题。