后端代码,方便查看,放在一起了
/** * 导出报名表 */ @Log("导出报名表") @GetMapping( "/export") @ResponseBody @RequiresPermissions("platform:activity:export") public void export(HttpServletResponse response,@RequestParam("id") Integer id) throws Exception { SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd"); List<ActivityEnrollInfo> list = activityService.listEnrollInfo(id); if (list == null || list.get(0).getEnrollNum() == 0) { throw new Exception("报名人数为0,无法导出!"); } response.reset(); response.setCharacterEncoding("utf-8"); String fileName = list.get(0).getActivityName()+"报名信息"; XSSFWorkbook wb = new XSSFWorkbook(); XSSFSheet sheet = wb.createSheet(fileName); XSSFRow row = null; row = sheet.createRow(0);//创建第一个单元格 row.setHeight((short) (400)); row.createCell(0).setCellValue("活动名称"); row.createCell(1).setCellValue("报名人数"); row.createCell(2).setCellValue("学员姓名"); row.createCell(3).setCellValue("城市"); row.createCell(4).setCellValue("手机号"); row.createCell(5).setCellValue("邮箱"); row.createCell(6).setCellValue("备注"); for (int i = 0; i < list.size(); i++) { row = sheet.createRow(i + 1); ActivityEnrollInfo devmonitorData = list.get(i); row.createCell(0).setCellValue(devmonitorData.getActivityName()); row.createCell(1).setCellValue(devmonitorData.getEnrollNum()); row.createCell(2).setCellValue(devmonitorData.getName()); row.createCell(3).setCellValue(devmonitorData.getCity()); row.createCell(4).setCellValue(devmonitorData.getMobile()); row.createCell(5).setCellValue(devmonitorData.getEmail()); } sheet.setDefaultRowHeight((short) (400)); //列宽自适应 for (int i = 0; i <= 13; i++) { sheet.autoSizeColumn(i); } response.setContentType("application/vnd.ms-excel;charset=utf-8"); OutputStream os = null; try { os = response.getOutputStream(); response.addHeader("Content-disposition", "attachment;filename=" + fileName + "-" + simpleDateFormat.format(new Date()) + ".xlsx");//默认Excel名称 wb.write(os); os.flush(); os.close(); return; } catch (IOException e) { e.printStackTrace(); } return; }
前端代码
因为是返回文档流,采用window.open(urls); 的方式下载excel。注意这种方式需要后台是支持get请求