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

2022-09-02 11:07:52

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

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

代码供参考:

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();
    }

}

答案 1

我之前也遇到过这个问题。我用谷歌搜索并阅读了这篇文章以及许多其他要求解决这个问题的帖子。我没有确切的解决方案,但是当我解决我的问题时,你也可以做到,也许。BiffException

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

我希望这能在你的案例中起作用。


答案 2

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


推荐