Java源码示例:com.monitorjbl.xlsx.StreamingReader

示例1
/**
 * 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);
}
 
示例2
@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();
}