layui导入excel

前端:

按钮:
 <a class="layui-btn layui-btn-sm layuiadmin-button-btn train-btn-css"
                    id="uploadGuideExcel">Excel导入计划</a>
//
//导入计划
        upload.render({
            elem: '#uploadGuideExcel',
//修改为你的url
            url: domainName + '/trainingbase/importExcel', // 此处配置你自己的上传接口即可
            exts: 'xlsx',
            type: 'post',
            headers: {"Authorization": 'Bearer ' + localStorage.getItem("access_token")}
            , before: function (obj) { //obj参数包含的信息,跟 choose回调完全一致,可参见上文。
                layer.load(); //上传loading
            },
            error: function (index, upload) {
                layer.closeAll('loading'); //关闭loading
            }
            , done: function (res) {
                layer.closeAll('loading'); //关闭loading
                if (res.code == 200) {
                    myLayer.msg("上传成功");
                    serchRef();
                } else {
                    myLayer.Alert(res.msg);
                }
            }
        });

后端:

@PostMapping("/importExcel")
    public AjaxResult importExcel(MultipartFile file) throws IOException {
        UserVO userVO = userVOUtils.getUserVO(request);
        //校验权限,写自己的
        if(userVO != null && userVO.getTrainBaseList() != null){
            //培训基地是否只有一个
            if(userVO.getTrainBaseList().size() != 1){
                return AjaxResult.error("您的培训基地权限不唯一,无法上传");
            }
        }
        //培训基地id,没用可删
        String trainBaseid = userVO.getTrainBaseList().get(0);
//可以从这里开始
        //1. 加载数据
        ExcelReader reader = ExcelUtil.getReader(file.getInputStream());
        List<Map<String, Object>> mapList = reader.read(0, 1, reader.getRowCount() - 1);
        if(mapList==null || mapList.size()==0)
            return AjaxResult.error("导入数据不能为空");
        //2.校验数据列是否正确,写自己的
        Set<String> excelKey = mapList.get(0).keySet();
        Map<String,String> mapKey=new HashMap<>();
        if(!verifyDataColumn(excelKey,mapKey))
            return AjaxResult.error("列名称有误,请按规定模板导入!");
        //3.校验数据是否符合,写自己的
        String codeName = mapKey.get("unit_code");
        String s = vComPersonViewService.matchTrainInfo(mapList,trainBaseid);
        if(!s.isEmpty()){
            return AjaxResult.error(s);
        }
        //写入数据,mapList就是读取的到excel数据,其余参数写自己需要的
        boolean result = studentPlanService.importExcel(mapList,trainBaseid);

        return AjaxResult.success("导入成功",null);
    }

    //验证列名称是否一致
    private boolean verifyDataColumn(Set<String> excelKey, Map<String,String> mapKey) {
        //加载数据列
        List<Map<String, String>> importMap = new ArrayList<>();
        Map<String, String> map = new HashMap<>();
        map.put("column_name","姓名");
        map.put("column_name","学员编号");
//        map.put("column_name","身份证号码");
        map.put("column_name","年度");
        map.put("column_name","培训状态");
        map.put("column_name","单元");
        map.put("column_name","轮转科室");
        map.put("column_name","轮转开始时间");
        map.put("column_name","轮转结束时间");
        importMap.add(map);
        boolean b=true;
        for (Map<String, String> map2 : importMap) {
            String column_name = map2.get("column_name");
            mapKey.put(map2.get("column_value"),column_name);
            if(!excelKey.contains(column_name))
            {
                b=false;
            }
        }
        return b;
    }

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值