Biff在阅读Excel表格时发生exception

我有一个代码从旧格式(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) 

xls格式(<Excel 2007)由OLE容器中的二进制BIFF数据组成。 xlsx格式(> = Excel 2007)由一个zip容器中的XML文件组成。

Java Excel API只处理第一种格式,因此当它不会遇到OLE容器时会抛出exception。

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

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

我只是有同样的麻烦。 项目是基于Maven的,以下指令的副作用是过滤XLS文件。

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

清理解决方法是定义子文件夹“configuration”,并允许过滤这个特定的文件夹,同时包括但不是过滤其他子文件夹。

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