一、Springboot 引入 EasyExcel 依赖二、后端代码三、前端代码
一、Springboot 引入 EasyExcel 依赖
如果你在网上看到还要引入 poi 什么的依赖,那是针对旧版 easyexcel ,现在的版本不需要引入其他依赖,就下面的就可以了。
com.alibaba easyexcel3.0.5
二、后端代码
@RequestMapping("/download") public void download(HttpServletResponse response) throws IOException { // 这里的 ContentType 要和前端请求携带的 ContentType 相对应 response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 String fileName = URLEncoder.encode("测试", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx"); // DownloadData 是实体类,sheet 里面是 sheet 名称,doWrite 里面放要写入的数据,类型为 ListEasyExcel.write(response.getOutputStream(), DownloadData.class).sheet("模板").doWrite(data()); }
三、前端代码
getExcel(){ //你们的函数不一定是 axios ,根据你们自己配置的来 axios({ headers: { //这里和后端的相对应 "Content-Type": "application/vnd.ms-excel", }, //这里也可以是 blob responseType: "arraybuffer" method: "post", url: '/download', // 请求参数,可以为空 params: { }, }).then(successResponse=> { //这里面是请求成功以后下载文件的方法 let objectUrl = successResponse const blob = new Blob([successResponse], {'application/vnd.ms-excel'}); objectUrl = URL.createObjectURL(blob); const a = document.createElement("a"); a.href = objectUrl; //这里可以重新定义文件名,以前端为准 a.download = "test.xlsx"; a.click(); a.remove(); URL.revokeObjectURL(objectUrl) }); },
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)