layui 使用EasyExcel进行模板填充,进行下载 - 灰信网(软件开发博客聚合)

Excel模板:

{xxx}属于Map填充,key对应xxx,value放入值。

{.xxx}属于List填充,xxx对应List的值名称,如果是List<实体类>,xxx则对应实体类的属性

前端:

使用a标记作为链接下载

<script>    function exportExcel(){//使用按钮点击进行下载        var demoReload=$('#param').val();        var url = '地址';        //创建一个a标签进行下载        var a = document.createElement('a');        a.href = url+'?param='+demoReload+'&excel_id=1';        $('body').append(a);  // 修复firefox中无法触发click        a.click();        $(a).remove();        setTimeout(function(){            layer.msg("导出结束", {                icon:1,                time:500            },function(){                window.location.reload();            });        }, 2000);    } </script>

后台:

controller只需要接收前端传来到参数,进行查询,放入List<实体类>里。

    @RequestMapping("/exportExcelEmpPayrollAccount")    public void exportExcelEmpPayrollAccount(String param,Integer excel_id,         HttpServletResponse response) {        Map<String, Object> map = new HashMap<String, Object>();        map.put("payrollName", param);        //查询名称返回的结果        List<EmpPayrollAccountVO> list = baseService.queryExceltLedger(param);        excelTemplate.ExcelTemplate(excel_id, list, map, response);    }
public void ExcelTemplate(Integer excel_id,List list, Map<String,Object> map, HttpServletResponse response){        String name="";        switch(excel_id){            case 1:                name="模板名称.xlsx";                break;            case 2:                name="模板名称.xlsx";                break;            case 3:                name="模板名称.xlsx";                break;            case 4:                name="模板名称.xlsx";                break;            case 5:                name="模板名称.xlsx";                break;        }        String templateFileName=customConfig.getModelPath()+"\\"+name;//找到本地模板路径        ExcelWriter excelWriter=null;        try {            String s=name.replaceAll(".xlsx","");            String fileName = s + DateUtils.getDate();//导出的文件名称            response.setContentType("application/vnd.ms-excel");            response.setCharacterEncoding("utf-8");            // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系            String filename = URLEncoder.encode(fileName, "utf-8");            response.setHeader("Content-disposition", "attachment;filename=" + filename + ".xls");            //使用response.getOutputStream()下载,并使用项目下的模板填充            excelWriter = EasyExcel.write(response.getOutputStream()).withTemplate(templateFileName).build();            WriteSheet writeSheet = EasyExcel.writerSheet().build();            if(map!=null){                excelWriter.fill(map, writeSheet);//存入map            }            if(list!=null){                excelWriter.fill(list, writeSheet);//存入list            }            excelWriter.finish();        } catch (Exception e) {            // 重置response            response.reset();            response.setContentType("application/json");            response.setCharacterEncoding("utf-8");            R<String> r = new R<>();            r.setCode(CommonConstants.FAIL);            r.setMsg("导出失败!");            r.setData(e.getMessage());            try {                response.getWriter().println(r);            } catch (IOException e1) {                throw new NetException(500,"导出失败!");            }            throw new NetException(500,"导出失败!");        }    }

下载结果:

官方链接:EasyExcel


原网址: 访问
创建于: 2021-02-25 16:39:43
目录: default
标签: 无

请先后发表评论
  • 最新评论
  • 总共0条评论