导出excel,后端返回文档流。前后端代码
后端代码,方便查看,放在一起了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | /** * 导出报名表 */ @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请求
下班记得打卡
分类:
公司项目遇到的错误及解决方案
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探