用了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(); }
excle文件上传并读取数据到数据库中
最新推荐文章于 2025-07-08 17:25:13 发布