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());
   }
}










