据说这种 SXSSF 是利用了本地物理内存来存储的。反正测试成功了。
select * from max_capacity_test limit 0,1000000
MaxExcelDao dao = new MaxExcelDao();
// XSSFWorkbook workbook = new XSSFWorkbook();
SXSSFWorkbook workbook = new SXSSFWorkbook();
// SXSSFWorkbook
SXSSFSheet sheet = workbook.createSheet();
List<MaxExcel> list = dao.findAll();
try ( FileOutputStream out= new FileOutputStream("C:\\Users\\Administrator\\Desktop\\a.xlsx");){
for (int i = 0; i < list.size(); i++) {
MaxExcel excel = list.get(i);
SXSSFRow row = sheet.createRow(i);
row.createCell(0).setCellValue(excel.getMctId());
row.createCell(1).setCellValue(excel.getMctName());
row.createCell(2).setCellValue(excel.getmTime());
}
workbook.write(out);
}catch (Exception e){
e.printStackTrace();
}
java.lang.IllegalArgumentException: Invalid row number (1048576) outside allowable range (0..1048575)
at org.apache.poi.xssf.streaming.SXSSFSheet.createRow(SXSSFSheet.java:123)
at com.xtkj.svt.Demo.main(Demo.java:26)
//excel单个sell页只能到1048575行