jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的。我们在使用jxl读取xls时能够正常读取,但是读取xlsx文件抛出了“Unable to recognize OLE stream ”错误。
Java代码如下:
import jxl.Sheet;
import jxl.Workbook;
import java.io.File;
/**
 * 模式使用 JXL 读取 .xlsx 文件,将会抛出 Unable to recognize OLE stream 异常
 */
public class Demo02 {
    public static void main(String[] args) throws Exception {
        String base = System.getProperty("user.dir");
        File xlsFile = new File(base + "\\src\\main\\resources\\2018.xlsx");
        // 获得工作簿对象
        Workbook workbook = Workbook.getWorkbook(xlsFile);
        // 获得所有工作表
        Sheet[] sheets = workbook.getSheets();
        // 遍历工作表
        if (sheets != null) {
            for (Sheet sheet : sheets) {
                // 获得行数
                int rows = sheet.getRows();
                // 读取数据
                for (int row = 1; row < rows; row++) {
                    System.out.println(sheet.getCell(0, row).getContents() + "\t"
                            + sheet.getCell(1, row).getContents()
                            + "\t" + sheet.getCell(2, row).getContents());
                }
            }
        }
        workbook.close();
    }
}运行上面代码,抛出如下错误:
Exception in thread "main" jxl.read.biff.BiffException: Unable to recognize OLE stream at jxl.read.biff.CompoundFile.<init>(CompoundFile.java:111) at jxl.read.biff.File.<init>(File.java:113) at jxl.Workbook.getWorkbook(Workbook.java:203) at jxl.Workbook.getWorkbook(Workbook.java:180) at com.huangx.poi.Demo02.main(Demo02.java:16)
解决办法:
将 2018.xlsx 文件使用Excel打开,然后另存为.xls格式的文件。即可解决……