Fork me on GitHub
时钟canvas

关于springboot通过jxls用模板导出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
public void exportExcel(@RequestParam(required = true) String Id, HttpServletResponse response,
           HttpServletRequest request) {
       String msg ="";
       try {
           Dto.setId(Id);
           List<HashMap<String, Object>> list = tbsMainInfoService.exportExcel(Dto);
           //文件名称
           String filename = "导出目录";
            String agent = request.getHeader("User-Agent");
            String filenameEncoder = "";
            if (agent.contains("MSIE")) {
                // IE浏览器
                filenameEncoder = URLEncoder.encode(filename, "utf-8");
                filenameEncoder = filenameEncoder.replace("+", " ");
            } else if (agent.contains("Firefox")) {
                // 火狐浏览器
                BASE64Encoder base64Encoder = new BASE64Encoder();
                filenameEncoder = "=?utf-8?B?" + base64Encoder.encode(filename.getBytes("utf-8")) + "?=";
            } else {
                // 其它浏览器
                filenameEncoder = URLEncoder.encode(filename, "utf-8");
            }
            //获取配置路径
            String url = FtpClientUtil.getStaticFile() + "/" + "目录模板.xlsx";
            //获取文件流
            InputStream in = new FileInputStream(url);
         // 创建操作excel文件对象
            XLSTransformer transformer = new XLSTransformer();
            // 设置ContentType请求信息格式
            response.setContentType("application/vnd.ms-excel");
            response.setHeader("Content-disposition", "attachment;filename=" + filenameEncoder + ".xlsx");
            // 要下载的这个文件的类型-----客户端通过文件的MIME类型去区分类型
            response.setContentType(request.getServletContext().getMimeType(filename));
            ServletOutputStream outputStream = response.getOutputStream();
            Map<String, Object> map = new HashMap<String, Object>();
            map.put("list", list);
            Workbook workbook = transformer.transformXLS(in, map);
            workbook.write(outputStream);
            workbook.close();
       } catch (Exception e) {
           // TODO: handle exception
             e.printStackTrace();
             msg = e.getMessage();
             throw new BusinessException("导出失败");
       }
   }

  模板

 

 前台vue代码

 Export() {
             let api =""
             let a = document.createElement('a');
            a.href = api;
            a.click();
        },

 

posted @   dragonKings  阅读(726)  评论(1编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
欢迎阅读『关于springboot通过jxls用模板导出excel的前后台实现』
     
点击右上角即可分享
微信分享提示