当前位置: 首页 > news >正文

深圳商城网站设计京东企业集团网站建设方案

深圳商城网站设计,京东企业集团网站建设方案,做外贸一般总浏览的网站,凡客诚品下载问题描述 在做系统的导入导出模块时需要在导入时判断用户导入的表格是否符合给定的模板&#xff0c;该系统导入导出使用的是EasyExcel&#xff0c;因此在实现该功能时是基于EasyExcel的 解决方案 创建Spring Boot项目&#xff0c;并添加如下依赖 <dependency><group…

问题描述
在做系统的导入导出模块时需要在导入时判断用户导入的表格是否符合给定的模板,该系统导入导出使用的是EasyExcel,因此在实现该功能时是基于EasyExcel的

解决方案
创建Spring Boot项目,并添加如下依赖

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.2.7</version>
</dependency>

创建导入时数据对应的实体类,并使用@ExcelProperty注解配置模板表头

public class EasyExcelData {@ExcelProperty(value = "学号", index = 0)private String no;@ExcelProperty(value = "姓名", index = 1)private String name;@ExcelProperty(value = "性别", index = 2)private String gender;private String errorReason;public String getNo() {return no;}public void setNo(String no) {this.no = no;}public String getName() {return name;}public void setName(String name) {this.name = name;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public String getErrorReason() {return errorReason;}public void setErrorReason(String errorReason) {this.errorReason = errorReason;}@Overridepublic String toString() {return "EasyExcelData{" +"no='" + no + '\'' +", name='" + name + '\'' +", gender='" + gender + '\'' +", errorReason='" + errorReason + '\'' +'}';}
}

创建监听类并继承AnalysisEventListener类,重写invokeHeadMap方法,在该方法中判断是否符合模板

public class EasyExcelDemoListener extends AnalysisEventListener<EasyExcelData> {private List<EasyExcelData> correctData = new ArrayList<>();private List<EasyExcelData> errorData = new ArrayList<>();/*** 在这里进行模板的判断* @param headMap 存放着导入表格的表头,键是索引,值是名称* @param context*/@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {/*count 记录模板表头有几个,用以判断用户导入的表格是否和模板完全一致如果用户导入表格较模板的表头多,但其余符合模板,这样不影响则不需要*/int count = 0;// 获取数据实体的字段列表Field[] fields = EasyExcelData.class.getDeclaredFields();// 遍历字段进行判断for (Field field : fields) {// 获取当前字段上的ExcelProperty注解信息ExcelProperty fieldAnnotation = field.getAnnotation(ExcelProperty.class);// 判断当前字段上是否存在ExcelProperty注解if (fieldAnnotation != null) {++count;// 存在ExcelProperty注解则根据注解的index索引到表头中获取对应的表头名String headName = headMap.get(fieldAnnotation.index());// 判断表头是否为空或是否和当前字段设置的表头名不相同if (StringUtils.isEmpty(headName) || !headName.equals(fieldAnnotation.value()[0])) {// 如果为空或不相同,则抛出异常不再往下执行throw new RuntimeException("模板错误,请检查导入模板");}}}// 判断用户导入表格的标题头是否完全符合模板if (count != headMap.size()) {throw new RuntimeException("模板错误,请检查导入模板");}}/*** 在这里可以进行数据的解析,每读取一条数据都会执行这个方法* @param easyExcelData 当前读取的数据* @param analysisContext*/@Overridepublic void invoke(EasyExcelData easyExcelData, AnalysisContext analysisContext) {if (StringUtils.isEmpty(easyExcelData.getNo())) {easyExcelData.setErrorReason("学号为空");errorData.add(easyExcelData);} else if (StringUtils.isEmpty(easyExcelData.getName())) {easyExcelData.setErrorReason("姓名为空");errorData.add(easyExcelData);} else if (StringUtils.isEmpty(easyExcelData.getGender())) {easyExcelData.setErrorReason("性别为空");errorData.add(easyExcelData);} else {correctData.add(easyExcelData);}}/*** 这里是读取完成后执行的方法* @param analysisContext*/@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {// 打印没有错误的数据System.out.println(correctData);// 打印有错误的数据System.out.println(errorData);}
}

进行测试,测试用到的表格可到EasyExcel判断导入时是否符合给定模板测试表格获取

@Test
public void testEasyExcelReadError() {// 读取错误表格String fileName = "excel" + File.separator + "demo-error.xlsx";EasyExcel.read(fileName, EasyExcelData.class, new EasyExcelDemoListener()).sheet().doRead();
}@Test
public void testEasyExcelReadCorrect() {// 读取正确表格String fileName = "excel" + File.separator + "demo-correct.xlsx";EasyExcel.read(fileName, EasyExcelData.class, new EasyExcelDemoListener()).sheet().doRead();
}
http://www.yayakq.cn/news/788500/

相关文章:

  • 企业型网站浙江省建筑培训网
  • 湛江建设工程交易中心网站南通自助模板建站
  • 电子商务网站建设客户需求调查表仿站酷网站模板
  • 网站开发课程设计报告一个工程项目的整个流程
  • 深圳宝安大型网站建设公司郑州招聘网
  • 美工外包网站wordpress 小说
  • 网站制作主要公司时尚字体设计网站
  • 岚山建设网站网络营销在我国的发展历程
  • 北京亦庄网站建设公司我想做网站怎么做
  • 长沙企业网站seo新网站没有死链接怎么做
  • 廊坊宣传片制作公司百度seo快速
  • 沈阳专业做网站开发公司wordpress 百度编辑器
  • 什么语言做网站好二级域名和一级域名优化难度
  • 怎样在别人网站做加强链接查询网站whois
  • 广告投放网站平台宝塔做的网站能不能访问
  • 手机网站开发源码在线html5制作网站
  • 中国临海门户网站工程建设邢台有什么网站
  • 长春建站培训班营销型网站制作培训多少钱
  • 比较漂亮的营销型网站驻马店市网站建设
  • 工程建设项目在哪个网站查询网站怎么查看访问量
  • 余杭网站建设joomla wordpress 外贸
  • 国外 家具 网站模板网络制作公司专业制作网站
  • 策划 网站wordpress数据库连接
  • 做的网站进不去后台聚美优品网站建设策划书
  • 怎么样用html做asp网站网站建设要用到编程吗
  • 江苏哪家做网站排名比较好设计自己的专属logo
  • 建个企业营销型网站网页设置与制作
  • 网站建设方式丨金手指排名26单页营销型网站模板下载
  • 如何服务器ip地址做网站环球新军事最新消息
  • 自己做网站 需要哪些湛江关键词优化报价