0
点赞
收藏
分享

微信扫一扫

esaypoi 导出多个sheet


1. 创建一个Workbook ,循环中 实例化一个ExportParams 设置每一个sheet的名称;实例化一个 ExcelExportService 调用其 createSheetForMap() 方法(这是核心)传入对应的工作簿的实例,导出的参数实例,表头,sheet的数据, 

public Workbook export(QuestionnaireResultQueryParam param) {
List<QuestionnaireResultAndDetailPO> result = questionnaireResultMapper.queryList(param);

// 循环的sheet 要导出几个sheet页
Map<String, List<QuestionnaireResultAndDetailPO>> maps = result.stream().collect(Collectors.groupingBy(QuestionnaireResultAndDetailPO::getQuestionnaireCode)); Workbook workbook = new HSSFWorkbook();
for(Map.Entry<String, List<QuestionnaireResultAndDetailPO>> entry : maps.entrySet()) {
String questionnaireCode = entry.getKey();
List<QuestionnaireResultAndDetailPO> questionResult = entry.getValue(); List<ExcelExportEntity> beanList = getBeanList(questionnaireCode);
List<Map<String, Object>> sheetList = getSheetList(questionResult); ExportParams exportParams = new ExportParams();
exportParams.setSheetName(questionResult.get(0).getQuestionnaireDesc());ExcelExportService service = new ExcelExportService();
service.createSheetForMap(workbook,exportParams,beanList,sheetList);
}
return workbook;
}

2. 导出

@GetMapping(value = "/export")
public void export(HttpServletResponse response,Long areaId,String questionnaireCode) {
QuestionnaireResultQueryParam param = getQuestionnaireResultQueryParam(areaId, questionnaireCode);
Workbook workbook = questionnaireResultService.export(param);
String filename = DateTimeUtil.dateToStr(new Date(), "yyyyMMddHHmmss") + ".xls";
downLoadExcel(filename,response,workbook);
}

private void downLoadExcel(String fileName, HttpServletResponse response, Workbook workbook) {
try {
response.setCharacterEncoding("UTF-8");
response.setHeader("Content-Disposition", "attachment;filename=" + URLEncoder.encode(fileName, "UTF-8"));
response.setHeader("content-Type", "application/vnd.ms-excel");
workbook.write(response.getOutputStream());
workbook.close();
} catch (IOException e) {
throw new EvaluationException(e.getMessage());
}
}

 

举报

相关推荐

0 条评论