java导出2007excel--防止内存溢出
来源:互联网 发布:js仿ios选择器 编辑:程序博客网 时间:2024/05/21 10:34
近期项目要求需导出4w+ 数据到excel,之前版本导出存在tomcat内存不够的情况。解决后的核心代码调整如下。
public voidgetExcle(HttpServletRequest request, HttpServletResponseresponse,List list) {
Workbookworkbook = new SXSSFWorkbook(1000);
Sheet sheet= workbook.createSheet("文件名");
String[]dataHeader = { "序号", "时间", "ID号", "长(mm)", "宽(mm)", "高(mm)","重量(Kg)" };
//workbook.setSheetName(0, );
Row headrow = sheet.createRow(0);
for (int col = 0; col < dataHeader.length; col++) {
Cell cell = headrow.createCell(col);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(dataHeader[col]);
}
int r=0;
Cell cell=null;
Row row=null;
for(ExpressDataEntity o : list) {
row=sheet.createRow(r+1);
cell =row.createCell(0);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(StringUtil.defaultIfBlank(o.getDevice_id()));
cell = row.createCell(1);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(DateUtil.getNewFormatDateString(o.getScanDate()));
cell = row.createCell(2);
cell.setCellType(HSSFCell.CELL_TYPE_STRING);
cell.setCellValue(StringUtil.defaultIfBlank(o.getBarCodes()));
if(o.getLength() != null){