Vue+Java的EXCEL导出解决方案,供参考
JAVA端
控制器层
@PostMapping(value = "/export") public void exportGraphTemplate(HttpServletResponse response) { try { @Cleanup ExcelWriter writer = exportService.exportTemplate(); response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); response.setHeader("Content-Disposition", "attachment;filename=".concat(String.valueOf(URLEncoder.encode(StrUtil.format("{}.xls", DateUtil.now()), CharsetUtil.UTF_8)))); @Cleanup ServletOutputStream outputStream = response.getOutputStream(); writer.flush(outputStream, true); } catch (Exception e) { e.printStackTrace(); } }
服务层
public ExcelWriter exportTemplate() { ExcelWriter writer = ExcelUtil.getWriter(); try { List<String> header = new ArrayList<>(); header.add("表头1"); header.add("表头2"); header.add("表头3"); writer.writeHeadRow(header); List<List<String>> content = new ArrayList<>(); for(int i=0;i<5;i++) { List<String> co = new ArrayList<>(); co.add("内容1"); co.add("内容2"); co.add("内容3"); content.add(co); } writer.write(content); } catch (Exception e) { e.printStackTrace(); } return writer; }
前端
return request({ url: '/export', method: 'post', data: {}, responseType: "blob", }).then( response => { let fileName = '文件名称.xls' const link = document.createElement('a') const blob = new Blob([response.data], { type: 'application/vnd.ms-excel' }) link.style.display = 'none' link.href = URL.createObjectURL(blob) link.setAttribute('download', `${decodeURIComponent(fileName)}`) document.body.appendChild(link) link.click() document.body.removeChild(link) }, error => { } )
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)