动态表头excle模板下载

该博客介绍了如何利用阿里提供的EasyExcel库动态创建Excel表头,并提供了示例代码展示如何根据JSON数据生成Excel表格,包括设置不使用默认样式。文章中包含了测试数据和实际运行的结果展示。

阿里提供的easyexle是真香 满足基本常见的需求;
参考文献:https://alibaba-easyexcel.github.io/quickstart
承接上一篇 动态导入表头excle
地址链接:
同样是json;
测试数据:

[{"title":"姓名","id":"text","key":"name","isForbidden":1,"placeholder":"请输入","isRequired":1,"RegEx":""},{"title":"出生日期","id":"date","key":"birth","isForbidden":1,"isRequired":1,"placeholder":"请选择日期"},{"title":"性别","id":"radio","key":"sex","isForbidden":1,"isRequired":1,"radioLists":[{"key":1,"label":"男","orForbid":""},{"key":2,"label":"女","orForbid":""}],"options":[{"value":"1","label":"禁用"},{"value":"2","label":"可用"}]},{"title":"住址","id":"text","key":"address","isForbidden":1,"placeholder":"请输入","isRequired":1,"RegEx":""},{"title":"手机号","id":"text","key":"phone","isForbidden":1,"placeholder":"请输入","isRequired":1,"RegEx":""}]

代码如下;

 @GetMapping("createExcle")
    public void createExcle(@RequestParam(value = "json",required = false)String temJson,HttpServletResponse response) throws IOException {

        List<List<String>> headList=new ArrayList<>();
        List<String> keyList=null;
         temJson="[{\"title\":\"姓名\",\"id\":\"text\",\"key\":\"name\",\"isForbidden\":1,\"placeholder\":\"请输入\",\"isRequired\":1,\"RegEx\":\"\"},{\"title\":\"出生日期\",\"id\":\"date\",\"key\":\"birth\",\"isForbidden\":1,\"isRequired\":1,\"placeholder\":\"请选择日期\"},{\"title\":\"性别\",\"id\":\"radio\",\"key\":\"sex\",\"isForbidden\":1,\"isRequired\":1,\"radioLists\":[{\"key\":1,\"label\":\"男\",\"orForbid\":\"\"},{\"key\":2,\"label\":\"女\",\"orForbid\":\"\"}],\"options\":[{\"value\":\"1\",\"label\":\"禁用\"},{\"value\":\"2\",\"label\":\"可用\"}]},{\"title\":\"住址\",\"id\":\"text\",\"key\":\"address\",\"isForbidden\":1,\"placeholder\":\"请输入\",\"isRequired\":1,\"RegEx\":\"\"},{\"title\":\"手机号\",\"id\":\"text\",\"key\":\"phone\",\"isForbidden\":1,\"placeholder\":\"请输入\",\"isRequired\":1,\"RegEx\":\"\"}]";
        JSONArray otherArr = JSONObject.parseArray(temJson);
        for(int i=0;i<otherArr.size();i++){
            String key = otherArr.getJSONObject(i).getString("title");
            keyList=new ArrayList<>();
            keyList.add(key);
            headList.add(keyList);
        }
        System.out.println(keyList);

        System.out.println(headList);
        try {

            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");
            // 这里需要设置不关闭流
            EasyExcel.write(response.getOutputStream()).head(headList)
		            .useDefaultStyle(false)//取消默认样式 图二 t 默认使用样式 表头有阴影
		            .autoCloseStream(Boolean.FALSE).sheet("模板")
                    .doWrite(null);
        } catch (Exception e) {
            // 重置response
            response.reset();
            response.setContentType("application/json");
            response.setCharacterEncoding("utf-8");
            Map<String, String> map = new HashMap<String, String>();
            map.put("status", "failure");
            map.put("message", "下载文件失败" + e.getMessage());
            response.getWriter().println(JSON.toJSONString(map));
        }
    }

结果如下:
使用默认样式:
在这里插入图片描述
不使用默认样式:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值