如何解决JXL错误:jxl.read.biff.BiffException:无法识别OLE流

我试图从我的.csv文件中获取单元格数据,但它收到错误:jxl.read.biff.BiffException:无法识别OLE流

我不明白如何解决这个问题,请给我一些解决方案,这段代码是针对jxl api的,是对.csv的api支持吗?

代码参考:

public void read() throws IOException, BiffException { File inputWorkbook = new File(inputFile); try { w = Workbook.getWorkbook(inputWorkbook.getAbsoluteFile()); // Get the first sheet Sheet sheet = w.getSheet(0); // Loop over first 10 column and lines for (row = 1; row < sheet.getRows(); row++) { ReadExcelLotSizeEntity readExcelLotSizeEntity =new ReadExcelLotSizeEntity(); cell = sheet.getCell(1,row); type= cell.getType(); if (cell.getType() == CellType.LABEL) { symbol=cell.getContents(); System.out.println(":::::::::::::::::"+symbol); readExcelLotSizeEntity.setSymbol(symbol); } int col=2; cell = sheet.getCell(col,row); while(!cell.getContents().equals("")||cell.getContents()!=null) { System.out.println("||||||||||||||||"+cell.getContents()); cell=sheet.getCell(col,row); col++; } lotSize= new Double(cell.getContents()); readExcelLotSizeEntity.setLotSize(lotSize); readExcelLotSizeEntity.setCreateUserId(1L); readExcelLotSizeEntity.setCreateDtTm(new Date()); readExcelLotSizeHome.persist(readExcelLotSizeEntity); } } catch (BiffException e) { e.printStackTrace(); } } 

我之前也遇到过这个问题。 我用BiffException搜索并阅读了这篇文章和其他许多要求解决这个BiffException 。 我没有确切的解决方案,但正如我解决了我的问题,你也可以这样做。

我试图从MS Office 2010中保存的Excel文件中读取数据,我收到此错误。 我将文件保存为Excel 2003-7 ,然后没有任何问题地阅读它。 可能是Office 10中出现此问题但Office 2003-7中不出现此问题。

我希望这对你的情况有用。

将文件另存为“Excel 97-2003工作簿”类型解决了我的问题。

JXL库不支持.csv.xslx格式,这是Excel-2010使用的格式。 因此,使用Excel 97-2003,这是.xls foramatted并且由JXL库支持。 或者如果你想使用excel-2010,请使用APACHE POI(XSSFWorkbooks)而不是JXL。 要使用.csv格式,请使用google for CSVReader库。

将Excel文件类型另存为Excel 97-2003工作表和扩展名类型为xls

实际上你使用的是不同版本的csv文件。请将它保存在确切的版本中。

例如:我们应该将excel表单保存为9

我试图从MS Office 2010中保存的Excel文件中读取数据,我收到此错误。 我将文件保存为Excel 2003-7,然后没有任何问题地阅读它。 可能是Office 10中出现此问题但Office 2003-7中不出现此问题

JXL是一个简单(因此有限)的API。 如果它说

无法识别OLE流

就是这样。 它不太了解您的Excel XLS文件。 确信错误是合法的。 此API仅支持*.xls文件; 它不支持,例如, *.csv*.xlsx文件。 显然,仅将文件重命名为*.xls是不够的。 它也必须是Excel 97-2003格式。

  • 复制*.csv*.xlsx文件中的所有单元格。
  • 打开MS Excel并粘贴复制的单元格。
  • 将文件另存为MS Excel 97-2003( *.xls )文件。

此错误肯定不会再出现。

另一方面,如果要直接处理其他格式(xlsx,csv),请查找Apache POI等其他工具。

将文件另存为Excel 97-2003,并在代码中(文件名中)将文件格式从xlsx更改为xlx