判断文件是2003前的版本还是2007的版本,然后对应调用HSSF或XSSF来读取。
这是初步的想法,但这种做法比较麻烦,看了下API,发现XSSF和HSSF虽然在不同的包里,但却引用了同一接口Workbook,于是想到了这样的读取方法:
Workbook book = null;
try {
book = new XSSFWorkbook(excelFile);
} catch (Exception ex) {
book = new HSSFWorkbook(new FileInputStream(excelFile));
}
在各版本的Excel中测试,没有发生异常,问题解决。