Java中导出多sheet页的excel表格。废话不多说,直接上代码:
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
StringBuffer fileNameBuffer = new StringBuffer();
fileNameBuffer.append("导出表名后面加时间"+ DateUtil.format(new Date(), DatePattern.PURE_DATETIME_PATTERN));
// 这里URLEncoder.encode可以防止中文乱码
String fileName = URLEncoder.encode(fileNameBuffer.toString(), "UTF-8").replaceAll("\\+", "%20");
response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx");
ExcelWriter excelWriter = EasyExcel.write(response.getOutputStream()).build();
List<UserSignStatusVO> list = userSignStatusService.selectUserSignStatus(engId);
List<UserSignStatusVO> noRegList = new ArrayList<>();
List<UserSignStatusVO> regList = new ArrayList<>();
String today = DatePattern.NORM_DATE_FORMAT.format(new Date());
//根据日期字段处理出两个list,后续放在两个sheet页中
if(CollectionUtil.isNotEmpty(list)){
for(UserSignStatusVO item : list){
Date regTime = item.getSignTime();
if(regTime != null){
String regStr = DateUtil.format(regTime,DatePattern.NORM_DATE_PATTERN);
if(today.equals(regStr)){
regList.add(item);
}else{
noRegList.add(item);
}
}else{
noRegList.add(item);
}
}
}
WriteSheet writeSheet1 = EasyExcel.writerSheet(0, "sheet1的名字").registerWriteHandler(new CustomRowWriteHandler()).head(UserSignStatusVO.class).build();
excelWriter.write(noRegList, writeSheet1);
WriteSheet writeSheet2 = EasyExcel.writerSheet(1, "sheet2的名字").registerWriteHandler(new CustomRowWriteHandler()).head(UserSignStatusVO.class).build();
excelWriter.write(regList, writeSheet2);
excelWriter.finish();