/**
* Choose excel read resolver
*
* @param excel Excel annotation of Excel entity
*/
private void chooseResolver(Excel excel) {
switch (excel.type()) {
case XLS:
try {
this.context.setWorkbook(new HSSFWorkbook(this.context.getInputStream()));
} catch (IOException e) {
throw new ExcelInitException("Init workbook error, " + e.getMessage());
}
break;
case XLSX:
Workbook workbook = StreamingReader.builder()
.rowCacheSize(excel.cacheRowSize())
.bufferSize(excel.bufferSize())
.open(this.context.getInputStream());
this.context.setWorkbook(workbook);
break;
default:
throw new ExcelInitException("No corresponding resolver was found");
}
this.readerResolver = new ReadExecutor<>();
this.readerResolver.init(this.context);
}
@Override
protected Iterator<Row> toIterator(File file, int sheetIndex) throws IOException {
// 缓存100行
// 看源码发现open时使用file更好
workbook = StreamingReader.builder()
.rowCacheSize(200)
.bufferSize(1024 * 1024)
.open(file);
return workbook.getSheetAt(sheetIndex).rowIterator();
}