一、产品需求:

  1. excel数据模板下载
  2. excel数据导入
  3. 导入得时候根据模板得校验规则来进行筛选,导入成功的返回成功列表,数据有问题得返回失败列表,失败列表支持数据编辑修正

看到需求第一眼可能就是第三列有点难度,我们知道,传统得数据校验是在DTO上面加注解

@PostMapping("/v2/importExcel")publicUserExcelVOimportExcelV2(@RequestParam("file")MultipartFilefile){List<UserExcel>list=null;List<UserExcel>fail=newArrayList<>();UserExcelVOuserExcelVO=newUserExcelVO();try{list=EasyExcel.read(file.getInputStream(),UserExcel.class,newModelExcelListener()).sheet().doReadSync();list.forEach(data->{Set<ConstraintViolation<UserExcel>>violations=ValidationUtils.getValidator().validate(data);if(violations.size()>0){fail.add(data);}});userExcelVO.setFail(fail);list.removeAll(fail);userExcelVO.setSuccess(list);}catch(IOExceptione){e.printStackTrace();}returnuserExcelVO;}publicstaticclassModelExcelListenerextendsAnalysisEventListener<UserExcel>{privateList<UserExcel>datas=newArrayList<>();/***通过AnalysisContext对象还可以获取当前sheet,当前行等数据*/@Overridepublicvoidinvoke(UserExceldata,AnalysisContextcontext){//数据存储到list,供批量处理,或后续自己业务逻辑处理。log.info("读取到数据{}",data);datas.add(data);//根据业务自行处理,可以写入数据库等等}//所有的数据解析完了调用@OverridepublicvoiddoAfterAllAnalysed(AnalysisContextcontext){log.info("所有数据解析完成");}}

三、测试结果

访问

  • localhost:8086/user/v1/importExcel

  • localhost:8086/user/v2/importExcel

结果

发现测试结果一致,后续写代码的时候,除了做功能,应该要考虑代码的扩展性,不然产品说加个功能,我们又得吭哧吭哧写代码,那这样也是太累了。

代码下载地址:

  • https://gitee.com/jike11231/mybatis-plus-demo-test.git

来源:blog.csdn.net/jike11231/

article/details/123994833

后端专属技术群

构建高质量的技术交流社群,欢迎从事编程开发、技术招聘HR进群,也欢迎大家分享自己公司的内推信息,相互帮助,一起进步!

文明发言,以交流技术职位内推行业探讨为主

广告人士勿入,切勿轻信私聊,防止被骗

加我好友,拉你进群

本篇文章来源于微信公众号: Java笔记虾



微信扫描下方的二维码阅读本文

此作者没有提供个人介绍
最后更新于 2023-11-02