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 => {
          }
      )
复制代码

 

 

 

 

posted @   wxxwjef  阅读(774)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
点击右上角即可分享
微信分享提示