7
因为一个 Excel sheet 的个数和名字都是未知的,所以之前使用 1.1.2-beta5 是这样写的: 1.1.2-beta5 :
ExcelListener excelListener = new ExcelListener();
try (InputStream in = IOUtil.toBuffered(bookStream)) {
ExcelReader excelReader = new ExcelReader(in, null, excelListener);
List<Sheet> sheets = excelReader.getSheets();
if (CollectionUtil.isNotEmpty(sheets)) {
sheets.forEach(excelReader::read);
}
} catch (IOException e) {
throw new ServiceException("Excel 解析失败", e);
}
上面的写法对于 xls/xlsx 都是可以正常读取所有 sheet 的数据,但是从 1.1.2-beta5 升级到 2.0.0-beta5 ,使用新的 API 后,只有 xlsx 文件可以读取所有 sheet 的数据,xls 文件无法正常读取: 2.0.0-beta5 :
ExcelListener excelListener = new ExcelListener();
try (InputStream in = IOUtil.toBuffered(bookStream)) {
ExcelReader excelReader = EasyExcel.read(in, excelListener).build();
// xls 文件 获取到的 sheets 是空的
List<ReadSheet> sheets = excelReader.excelExecutor().sheetList();
if (CollectionUtil.isNotEmpty(sheets)) {
sheets.forEach(excelReader::read);
}
excelReader.finish();
} catch (IOException e) {
throw new ServiceException("Excel 解析失败", e);
}
请问这是 bug,还是我的写法不对??