业务需要在一个既存固定样式(列头,背景,固定列,过滤等等)的excel里面写入大量数据。
已知XSSFWorkBook在大量写入数据时会有严重的性能问题,并导致内存泄漏,而SXSSFWorkBook适合写入大量数据,但不适合操作模板。
直接介绍解决办法
通过XSSFWorkBook读入带有样式的模板
XSSFWorkbook wb = (XSSFWorkbook)WorkbookFactory.create(fis);
通过wb创建SXSSFWorkBook对象用作大量数据操作
SXSSFWorkbook sxw = new SXSSFWorkbook(wb,100);
关键点:
如果需要操作模板,比如读写或填充单元格、行,需要通过XSSFSheet对象
如删除某行
XSSFSheet orgSheet = wb.getSheetAt(0);
Row templateTypeRow = orgSheet.getRow(0);
orgSheet.removeRow(templateTypeRow);
如果要大批量写入数据,需要通过SXSSFSheet
SXSSFSheet templateSheet = sxw.getSheetAt(0);
for(int i=0;i<数据.length;i++