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格式的文件。即可解决……