不同的excel版本,最大行数不同。所以大数据导出时。最小60000行开始分sheet(兼容97-2003)。
public void init(ExportParams entity, List<ExcelExportEntity> excelParams) {
LOGGER.debug("ExcelBatchExportServer only support SXSSFWorkbook");
entity.setType(ExcelType.XSSF);
this.workbook = new SXSSFWorkbook();
this.entity = entity;
this.excelParams = excelParams;
super.type = entity.getType();
this.createSheet(this.workbook, entity, excelParams);
if (entity.getMaxNum() == 0) {
entity.setMaxNum(1000000);
}
this.insertDataToSheet(this.workbook, entity, excelParams, (Collection)null, this.sheet);
}
ExportParams设置为的MaxNum设置为60000,
public Workbook appendData(Collection<?> dataSet) {
if (this.sheet.getLastRowNum() + dataSet.size() > this.entity.getMaxNum()) {
this.sheet = this.workbook.createSheet();
this.index = 0;
this.insertDataToSheet(this.workbook, entity, excelParams, (Collection)null, this.sheet);
}
Iterator its = dataSet.iterator();
while(its.hasNext()) {
Object t = its.next();
try {
this.index += this.createCells(this.patriarch, this.index, t, this.excelParams, this.sheet, this.workbook, this.rowHeight, 0)[0];
} catch (Exception var5) {
LOGGER.error(var5.getMessage(), var5);
throw new ExcelExportException(ExcelExportEnum.EXPORT_ERROR, var5);
}
}
return this.workbook;
}
this.insertDataToSheet(this.workbook, entity, excelParams, (Collection)null, this.sheet);源码加入这条语句,后面生成的sheet就有标题行。