/*** 处理checkExcel 过程的异常* 无异常 返回ResponseEntity ->data* @return*/public ResponseEntity checkExcelData(path = "文件路径"){//文件路径为空if(path==null){return new ResponseEntity(ResponseCode.EXCEL_VALUE_EMPTY_NAME);}//尝试解析模板List<Sqrlb> list = new ArrayList<>();try {list = this.checkExcel(requestBody.getFilePath());} catch (Exception e) {//异常返回值检测if(e.toString().indexOf("not exists")!=-1){return new ResponseEntity(ResponseCode.EXCEL_EXISTS);}if(e.getMessage().equals(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_NAME.getCode()))){return new ResponseEntity(ResponseCode.EXCEL_VALUE_EMPTY_NAME);}else if(e.getMessage().equals(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_LX.getCode()))) {return new ResponseEntity(ResponseCode.EXCEL_VALUE_EMPTY_LX);}else if(e.getMessage().equals(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_HM.getCode()))) {return new ResponseEntity(ResponseCode.EXCEL_VALUE_EMPTY_HM);}else if(e.getMessage().equals(String.valueOf(ResponseCode.ZJLX_NULL.getCode()))){return new ResponseEntity(ResponseCode.ZJLX_NULL);}else{return new ResponseEntity(ResponseCode.EXCEL_TYPE);}}if(list==null || list.size()==0){return new ResponseEntity(ResponseCode.EXCEL_NOT_ROTE);}
//        list.forEach(System.out::println);ResponseEntity res = new ResponseEntity();res.addData(list);return res;}

checkExcel方法:

   /*** 遍历文件*/@Overridepublic List<Sqrlb> checkExcel(String filePath) throws Exception  {List<Sqrlb> list= new ArrayList<>();EasyExcel.read(filePath, Sqrlb.class, new AnalysisEventListener<Sqrlb>() {// 每读取一行就调用该方法@SneakyThrows@Overridepublic void invoke(Sqrlb data, AnalysisContext context) {//名字没填写if(StringUtils.isEmpty(data.getSqrxm())){throw new Exception(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_NAME.getCode()));}//证件类型没填写if(StringUtils.isEmpty(data.getSqrzjlx())){throw new Exception(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_LX.getCode()));}//证件号码没填写if(StringUtils.isEmpty(data.getSqrzjhm())){throw new Exception(String.valueOf(ResponseCode.EXCEL_VALUE_EMPTY_HM.getCode()));}//根据模板身份类型 替换对应if(data.getSqrzjlx().equals(ResponseCode.ZJLX1.getMessageCh())){data.setSqrzjlx(ResponseCode.ZJLX1.getMessageEn());}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX2.getMessageCh())){data.setSqrzjlx(ResponseCode.ZJLX2.getMessageEn());}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX3.getMessageCh())){data.setSqrzjlx(ResponseCode.ZJLX3.getMessageEn());}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX4.getMessageCh())){data.setSqrzjlx(ResponseCode.ZJLX4.getMessageEn());}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX5.getMessageCh())){data.setSqrzjlx(ResponseCode.ZJLX5.getMessageEn());}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX6.getMessageCh())){data.setSqrzjlx(ResponseCode.ZJLX6.getMessageEn());}else if(data.getSqrzjlx().equals(ResponseCode.ZJLX7.getMessageCh())){data.setSqrzjlx(ResponseCode.ZJLX7.getMessageEn());}else{//超出其中类型之外throw new Exception(String.valueOf(ResponseCode.ZJLX_NULL.getCode()));}list.add(data);}// 全部读取完成就调用该方法@Overridepublic void doAfterAllAnalysed(AnalysisContext context) {//                System.out.println("读取完成");}}).sheet().doRead();return list;}

Sqrlb的PDO:

package com.esint.fzjlcxdwjlcx.entity.dto;import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@ApiModel("申请人列表")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Sqrlb {@ApiModelProperty("申请人姓名")private String sqrxm;@ApiModelProperty("申请人证件类型")private String sqrzjlx;@ApiModelProperty("申请人证件号码")private String sqrzjhm;}

ResponseCode 枚举

package com.esint.fzjlcxdwjlcx.constants;/*** @author :mengxiang* @description:默认返回值* @date :2021-12-15 23:38*/
public enum ResponseCode {SUCCESS(200, "OK", "请求成功。"),FAIL_SERVICE_CREATED(201, "Created", "已创建。"),FAIL_SERVICE_ACCEPTED(202, "Accepted", "已接受。"),FAIL_SERVICE_GRAMMAR(400, "Bad Request", "客户端请求的语法错误,服务器无法理解"),FAIL_SERVICE_AUTH(401, "Unauthorized", "请求要求用户的身份认证。"),FAIL_SERVICE_REFUSE(403, "Forbidden", "服务器理解请求客户端的请求,但是拒绝执行此请求."),FAIL_SERVICE_NOT(405, "Method Not Allowed", "服务的操作被禁用。"),FAIL_SERVICE_MATCHING(406, "Not Acceptable", "服务器无法根据客户端请求的内容特性完成请求。"),FAIL_USER_INFO(407, "userResponse fail", "解析受累单位与民警失败"),FAIL_SERVICE_(422, "Unprocesable  Entity", "请求资源校验失败。"),ERROR(500, "Internal Server Error", "服务器内部错误。"),ERROR_REQUESTDWFKFW(80009, "反馈服务失败", "反馈服务失败。"),ERROR_REQUESTDWFKFWFH(80010, "反馈服务返回失败", "反馈返回失败。"),ERROR_REQUESTBJZTCX(800010, "查询办结状态服务失败", "查询办结状态服务失败。"),ERROR_REQUESTBJZTCXFH(80011, "查询办结状态服务返回失败", "查询办结状态服务返回失败。"),ERROR_REQUESTDWLSCX(80004, "单位办理历史查询服务失败", "单位办理历史查询服务失败。"),ERROR_REQUESTDWLSCXFH(80005, "单位办理历史查询服务返回失败", "单位办理历史查询服务返回失败。"),ERROR_SEARCHSLXX(80003, "没有查询到该条记录的受理信息", "没有查询到该条记录的受理信息。"),ERROR_TOKEN(2001,"Token Failed","未能获得相关Token信息"),ERROR_USERINFO(2002,"User Detail Failed","获得用户信息出错"),EXCEL_TYPE(3001,"Excel Type Failed","模板异常"),EXCEL_VALUE_EMPTY_NAME(3002,"name Value Null","名字存在空值"),EXCEL_VALUE_EMPTY_LX(3003,"zjlx Value Null","申请人证件类型存在空值"),EXCEL_VALUE_EMPTY_HM(3004,"zjhm Value Null","证件号码存在空值"),EXCEL_EXISTS(3005,"xlsx not exists","服务器文件不存在"),EXCEL_NOT_ROTE(3006,"xlsx has no rote","excel没有记录"),EXCEL_MAX_ROTE(3007,"xlsx max 100","excel记录不超过100"),ZJLX1(3101,"111","身份证"),ZJLX2(3102,"414","护照"),ZJLX3(3103,"511","台湾居民来往大陆通行证"),ZJLX4(3104,"989","港澳台居民居住证"),ZJLX5(3105,"988","港澳居民来往内地通行证"),ZJLX6(3106,"553","永久居留证件"),ZJLX7(3107,"113","居民户口薄"),ZJLX_NULL(3108,"zjlx Error","证件类型错误"),FILE_IO_ERROR1(4001,"IO Error1","IO异常1"),FILE_IO_ERROR2(4002,"IO Error2","IO异常2"),FILE_NULL(4003,"file null","上传文件空"),FORM_ERROR(4004,"some message must not be null","表单必填项不能为空"),FORM_SUCCESS(4005,"check form success","表单校验无误"),FORM_FILE_PATH(4006,"file path null","表单文件路径为空"),FORM_SAVE_ERROR(4007,"form save database false","表单入库错误"),FORM_SAVER_SERVERNUM_ERROR(4008,"isServiceNum","没有保存服务编码"),GET_TOKEN(5001,"get token server error","获得平台token异常"),GET_TOKEN_NULL(5002,"token is null","获得平台token data为空"),GET_USRES_INFO(5003,"get user by systoken server error","基于sysToken获得用户详细信息异常"),GET_USRES_INFO_NULL(5004,"get user by systoken is null","基于sysToken获得用户详细data为空"),GET_USERS_NULL(5005,"userResponse is null","userResponse空"),GET_SLDWXX_ERROR(5006,"userResponse changge sldwxx error","userResponse转换sldwxx异常"),GET_SLDWXX_NULL(5007,"sldwxx or sldwdm is null","受理单位或受理单位代码为空"),GA_SEND_ERROR(6001,"gong an server send error","公安提交数据异常"),GA_GET_DATA_NULL(6002,"gong an server applyResult is null","公安提交返回空"),GA_GET_DATA_ERROR(6003,"gong an server data error","公安提交失败"),;private final Integer code;private final String messageEn;private final String messageCh;private ResponseCode(Integer code, String messageEn, String messageCh) {this.code = code;this.messageCh = messageCh;this.messageEn = messageEn;}public int getCode() {return code;}public String getMessageEn() {return messageEn;}public String getMessageCh() {return messageCh;}}

结果类ResponseEntity:

package com.esint.fzjlcxdwjlcx.entity.response;import com.esint.fzjlcxdwjlcx.constants.ResponseCode;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;@Data
@AllArgsConstructor
@NoArgsConstructor
@ApiModel("通用返回")
public class ResponseEntity<T> {@ApiModelProperty("返回代码")private Integer code;@ApiModelProperty("返回消息")private String message;@ApiModelProperty("返回对象")private T data;public ResponseEntity(ResponseCode responseCode) {this.code = responseCode.getCode();this.message = responseCode.getMessageCh();}public ResponseEntity(Integer code,String message) {this.code = code;this.message = message;}public ResponseEntity(ResponseCode responseCode, T data) {this.code = responseCode.getCode();this.message = responseCode.getMessageCh();this.data = data;}public ResponseEntity<T> addData(T data) {this.data = data;return this;}public ResponseEntity<T> success(T data) {return new ResponseEntity<T>(ResponseCode.SUCCESS).addData(data);}public ResponseEntity<T> success(Integer code,String message,T data) {return new ResponseEntity<T>(code,message).addData(data);}public ResponseEntity<T> error(String erorrs) {return new ResponseEntity<T>(81000,erorrs);}public ResponseEntity<T> error(Integer code,String erorrs) {return new ResponseEntity<T>(code,erorrs);}
}

基于easyExccel解析excel相关推荐

  1. poi读取excel 转换实体_java解析excel数据,将excel数据转换为实体类,存入数据库...

    前一段时间写了一个功能,从数据库中抽取出来的字段,写入到excel文件里:java使用poi把从数据库中取出的数据写入excel 最近实现了一个相反的功能,前台传一个excel文件,在后台解析该exc ...

  2. java解析excel存入map,java解析excel数据,将excel数据转换为实体类,存入数据库

    前一段时间写了一个功能,从数据库中抽取出来的字段,写入到excel文件里:java使用poi把从数据库中取出的数据写入excel 最近实现了一个相反的功能,前台传一个excel文件,在后台解析该exc ...

  3. Java读取和解析Excel数据:基于Apache POI(二)

    Java读取和解析Excel数据:基于Apache POI(二) 假设附录1文章中的test.xls是对员工的考勤记录表.需要根据这张excel表统计员工的加班时间,那么需要重点关注第五列的下班时候的 ...

  4. 基于注解的Excel导出万能模板

    目录 前言 功能简介 功能展示 准备 1. 一对多数据关系, 生成多个Sheet,并附加Sheet的密码. 2. 一对一数据关系,复杂表头. 3. 一对多数据关系和一对一数据关系,复杂表头. 4. 分 ...

  5. poi和easyExcel基于Java操作Excel学习笔记

    1 学习前言 Excel和读写和文件的读写没有本质的区别,都是属于IO操作,我们使用原生的IO就能解决Excel的导入和导出,当然操作起来比较麻烦,性能也不高,这次我们就学习poi和easyExcel ...

  6. XX健康:预约管理-预约设置日历插件文件简单下载Excel文件解析Excel表数据批量导入

    1. 需求分析 前面我们已经完成了检查项管理.检查组管理.套餐管理等.接下来我们需要进行预约设置,其实就是设置每一天的体检预约最大数量.客户可以通过微信端在线预约,在线预约时需要选择体检的时间,如果客 ...

  7. 【poi-3.8】poi解析excel插入数据库详解

    文章目录 poi解析excel&插入数据库详解 说明 一.目的 二.准备工作 三.思路分析 四.流程图分析 五.核心代码 1:上传文件 2:获取输入流 3:初始化excel表 4:遍历行和列 ...

  8. Java中的文件解析——Excel解析

    在日常的开发过程中,经常会使用到excel工作簿进行数据的保存,那么在java中,通常会使用第三方提供的技术来进行excel文件的解析,比如:Apache POI.JXL.Alibaba EasyEx ...

  9. java 读取excel2007 内存不足_原创 |我是如何解决POI解析Excel出现的OOM问题的?

    背景 之前接手过一个解析Excel的项目,使用的是Java里的POI组件解析的,但是在解析时候经常出现OOM,后来我从下面几个方面优化了下,解决了99%的问题,对,你没看错,只解决了99%. 解决方案 ...

最新文章

  1. resin安装与配置
  2. ubuntu source
  3. Python多进程之构建进程池
  4. Redis操作命令总结
  5. 记事本贪吃蛇游戏代码_厉害了,程序员28行代码写贪吃蛇游戏,附源码!
  6. city code table广东_专访 | 杨龙——第20届广东十佳服装设计师
  7. c# 读取 txt 文件中数据(int)
  8. Form窗体的属性与值 1123
  9. Django复习:视图和模版
  10. javascript检测浏览器类型和版本号(兼容各浏览器)
  11. 求解偏微分方程开源有限元软件deal.II学习--Step 1
  12. 玩机教程----安卓机型解锁system分区 任意修改删除系统文件
  13. 专利与论文-1:为什么要写专利?专利有什么好处?
  14. 99%的手机Root方法都在这里
  15. 用matlab给图片标记区域,MATLAB二值图像连通区域标记(两步法)
  16. Linux pwd命令:显示当前工作目录。
  17. 为什么自学前端容易失败?数千名新手程序员得出结论
  18. pdfbox2.0.1将pdf转图片
  19. 网易平台服务器修改魔兽,魔兽世界怀旧服:网易用这种手段分流玩家 工作室笑了,我们哭了...
  20. STM32_HAL库—PWM产生指定个数

热门文章

  1. java项目黑科技_黑科技神器-uTools
  2. css3 fieldset,生僻标签 fieldset 与 legend 的用法详解
  3. 国密算法SM1,SM2,SM3,SM4的研究
  4. DISCUZ首页模板解释
  5. Jetson Nano系统移植到另一张TF卡,一直在nvidia界面循环
  6. 如何管理自己、管理孩子的玩手机的时间,怎样对时间进行把控,不妨来看看
  7. 工程伦理-美国密歇根州大坝溃决事件的分析与思考
  8. Pytorch训练PTB数据集时速度慢的问题
  9. 正则表达式的一些元符号
  10. 2、有符号数与无符号数