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



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

我不知道如何解决这个问题,请给我一些解决方案这段代码是为jxlapi&这是对.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的帖子。我没有确切的解决方案,但当我解决了我的问题时,也许你也可以这样做。

我试图从MS Office 2010中保存的Excel文件中读取数据,但我收到了此错误。我将该文件保存为Excel2003-7,然后毫无问题地读取它。此问题可能发生在Office 10中,但不发生在Office 2003-7

我希望这对你有用。

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

JXL库不支持Excel-2010使用的.csv.xslx格式。因此,使用了JXL库支持的.xls格式的Excel97-2003。否则,如果您想使用excel-2010,请使用APACHE POI(XSSFWorkbooks)而不是JXL。要使用.csv格式,请在谷歌上搜索CSVReader库。

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文件类型保存为Excel 97-2003工作表,将扩展类型保存为xls

实际上您使用的是不同版本的csv文件。请将其保存在准确的版本中。

例如:我们应该将word中的excel表保存为9

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

我试图从保存在MS Office 2010中的Excel文件中读取数据,但遇到了此错误。我将文件保存为Excel2003-7,然后毫无问题地阅读了它。这种情况可能发生在Office 10中,但不发生在Office 2003-7 中

最新更新