读取excel工作表时出现异常

读取excel工作表时出现异常,excel,jxl,Excel,Jxl,我有一个代码可以从旧格式(97-2003)的excel表格中读取。我对数据做了一些修改,最终得到了一张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.

我有一个代码可以从旧格式(97-2003)的excel表格中读取。我对数据做了一些修改,最终得到了一张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)
jxl.read.biff.biffeException:无法识别OLE流
在jxl.read.biff.CompoundFile.(CompoundFile.java:116)
位于jxl.read.biff.File。(File.java:127)
在jxl.Workbook.getWorkbook(Workbook.java:268)
在readexcel.readexcel.readContent(readexcel.java:50)
位于readexcel.readexcel.init(readexcel.java:25)
位于readexcel.readexcel.main(readexcel.java:183)
xls格式(=Excel2007)由zip容器中的XML文件组成

JavaExcelAPI只处理第一种格式,因此当它没有遇到OLE容器时会抛出异常


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

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

我也遇到了同样的问题。该项目是基于Maven的,下面的指令的副作用是过滤XLS文件

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

src/main/resources
真的

干净的解决方案是定义子文件夹“config”并允许在此特定文件夹上进行筛选,同时包括但不筛选其他子文件夹。

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

看来jxl仍在使用旧的xls阅读器尝试读取新的xlsx文件-为什么不简单地“另存为”呢从MS Excel内部将其保存在旧的97-2003格式中……这是非常有见地的……您能给我介绍一下处理这两种格式的API吗?Apache POI在Java中处理这两种文件类型:我有同样的问题。我正在使用maven用一些Excel工作簿启动SoapUI。当您使用maven过滤这些Excel文件时,它会在内部对其进行更改,使其无法使用。因此,解决办法不是过滤它们。