excle文件上传并读取数据到数据库中

本文展示了使用Hutool的ExcelUtil工具处理Excel文件的代码。代码通过正则表达式验证Excel中日期、时间格式,还验证姓名是否存在。若格式全部正确,将数据封装到列表中一次性添加;若格式有误,则返回相应错误信息。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

用了hutool的excelUtil工具,如果没有该工具,请自行找到解决方法.

@RequestMapping(value = "/addDept")
public Wrapper addDept(@RequestParam("file") MultipartFile file) throws Exception{


    ExcelReader reader = null;
//日期格式
    DateFormat formater = new SimpleDateFormat("yyyy-MM-dd");

    try {
        reader = ExcelUtil.getReader(file.getInputStream());
        //读取全部数据
        List<List<Object>> readAll = reader.read();
       //从第二行开始读取数据
        for (int i = 1; i < readAll.size(); i++) {
            //验证日期格式为2015-11-11的日期(本人正则不行,就写了非常简单的正则,)
            String string = readAll.get(i).get(0)+"";
            String[] strings=   string.split(" ");
            String regEx = "[0-9][0-9][0-9][0-9][-][0-9]{0,2}[-][0-9]{0,2}";
            Pattern pattern = Pattern.compile(regEx);
            Matcher matcher = pattern.matcher(strings[0]);
            // 字符串是否与正则表达式相匹配
            boolean rs = matcher.matches();
            if (rs==false){
               return WrapMapper.error("第"+(i+1)+"行日期格式有误");
            }
           //验证时间格式为8:00:00-9:00:00的日期(本人正则不行,就写了非常简单的正则,)
            String regEx1 = "[0-9]{0,2}[:][0-9]{0,2}[:][0-9]{0,2}[-][0-9]{0,2}[:][0-9]{0,2}[:][0-9]{0,2}";
            String string1 = readAll.get(i).get(1)+"";
            Pattern pattern1 = Pattern.compile(regEx1);
            Matcher matcher1 = pattern1.matcher(string1);
            // 字符串是否与正则表达式相匹配
            boolean rs1 = matcher1.matches();
            if (rs1==false){
                return WrapMapper.error("第"+(i+1)+"行时间格式有误");
            }
            //验证此人是否存在
            if(rotaService.getName(readAll.get(i).get(2)+"")==null){
                return WrapMapper.error("第"+(i+1)+"行姓名有误,中查无此人");
            }

        }
        //如果所有格式全部正确,则这行下面的代码
        List<Rota> rotaList = new ArrayList<>();
        for (int i = 1; i <readAll.size() ; i++) {
            String string = readAll.get(i).get(0)+"";
            String[] strings=   string.split(" ");
            Rota rota = new Rota();
            rota.setExpertId(Integer.parseInt(rotaService.getName(readAll.get(i).get(2)+"")));
            rota.setDutyDate(formater.parse(strings[0]));
            rota.setDutyTime(readAll.get(i).get(1)+"");
            //将数据放在list中,一次性全部添加
            rotaList.add(rota);
        }
                                   
      return WrapMapper.ok(rotaService.addDept(rotaList));

    } catch (IOException e) {
        e.printStackTrace();
    }
    return WrapMapper.ok();
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值