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