Java POI 用 SXSSFWorkbook 读取模板,输出
公司的项目,用户投诉,说只要点击模板下载功能,就会导致整个服务全部停掉.
之前这个功能由于数据量并没有那么多,所以一直都没有发生过这种问题.
当数据量在 20w条,10列 使用XSSFWorkbook 16G的内存完全不支持.
所以只好使用SXSSFWorkbook来实现了
- 如何用SXSSFWorkbook来读取Excel模板
–模板
//SXSSFWorkbook并不支持直接读取Excel模板
//要使用XSSFWorkbook读取,再用XSSFWorkbook对象来创建SXSSFWorkbook对象
String path = "D:\\TestFile\\";
String fileName = "test.xlsx";
File file = new File(path + fileName);
FileInputStream inputStream = new FileInputStream(file);
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
workbook.cloneSheet(0);
workbook.setSheetName(1, "新Sheet页1");
workbook.removeSheetAt(0);
SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook(workbook, 100);
//不做任何操作 直接输出.
String outFileName = "testEnd2.xlsx";
FileOutputStream outFileStream = new FileOutputStream(new File(path + outFileName));
BufferedOutputStream bufferedOutputStream = new BufferedOutputStream(outFileStream);
sxssfWorkbook.write(bufferedOutputStream);
bufferedOutputStream.flush();
bufferedOutputStream.close();
–输出的文件
可以通过这样的方式来读取Excel模板
但是 SXSSFWorkbook 读取Row的时候会有空指针的情况 就像这样
SXSSFWorkbook sxssfWorkbook = new SXSSFWorkbook(workbook, 100);
Row row = sxssfWorkbook.getSheetAt(0).getRow(0);
System.out.println(row.getCell