引入依赖

    <dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>4.0.0</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-compress</artifactId><version>1.18</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>4.0.0</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.4</version></dependency><dependency><groupId>org.apache.xmlbeans</groupId><artifactId>xmlbeans</artifactId><version>3.1.0</version></dependency><dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml-schemas</artifactId><version>4.0.0</version></dependency>

获取文件

public static LinkedHashSet<String> getHead(MultipartFile file) throws IOException {LinkedHashSet<String> result = new LinkedHashSet<>();InputStream stream = file.getInputStream();Workbook wkbook = WorkbookFactory.create(stream);Sheet rs = wkbook.getSheetAt(0);Row row = rs.getRow(0);for (int i=0; i<row.getLastCellNum(); i++){String cellData = getCellValue(row.getCell(i));result.add(cellData.replaceAll(" ", ""));}return result;}

getCellValue方法

public static String getCellValue(Cell cell) throws Exception {CellType cellType = cell.getCellType();String cellValue = "";switch (cellType) {case NUMERIC:if (DateUtil.isCellDateFormatted(cell)) { // 日期   可能无法识别Date date = cell.getDateCellValue();cellValue = new DateTime(date).toString("yyyy-MM-dd");} else {// 不是日期格式 防止数字过长cell.setCellType(STRING);cellValue = cell.toString();}break;case FORMULA:cellValue = cell.getCellFormula();break;case STRING:cellValue = cell.getStringCellValue();break;case BOOLEAN: // 布尔cellValue = String.valueOf(cell.getBooleanCellValue());break;case BLANK: // 空break;case ERROR:throw new Exception("单元格类型异常");}return cellValue;}

定义一个List,存入表头信息

public static final List<String> MY_LIST = Collections.unmodifiableList(new ArrayList<String>() {private static final long serialVersionUID = 1L;{add("* 姓名(必填)");add("* 身份证号码(必填)");add("学历");add("性别");add("* 培训时间(必填)");add("* 培训名称(必填)");add("证明人");add("主办单位");add("民族");add("籍贯");add("政治面貌");add("地址");add("手机号码");add("邮箱");}});

最后封装成一个方法返回boolean即可

 public static boolean getHeads(MultipartFile file) throws IOException {LinkedHashSet<String> head = getHead(file);for (String s : head) {if (!MY_LIST.contains(s)){return false;}}return true;}

excel导入表头校验相关推荐

  1. excel导入数据校验_从Excel数据验证列表中选择多个项目

    excel导入数据校验 You've probably used an Excel data validation drop down list, where you can click the ar ...

  2. excel导入数据校验_Excel数据验证更新

    excel导入数据校验 I've finally updated my Data Validation intro video, so it shows the steps for creating ...

  3. excel导入数据校验_使用Excel数据验证限制日期范围

    excel导入数据校验 Yesterday, one of my clients emailed to let me know that she was having trouble entering ...

  4. excel导入数据校验_Excel数据验证错误消息

    excel导入数据校验 Do you like to use error checking in Excel, so that problem cells are flagged, or do you ...

  5. java excel 导入 加校验_POI实现excel各种验证和导入的思路总结

    制定标准 导入总是与导出相辅相成的,无规矩不成方圆.所谓的标准都是大家一同来维护和遵守的,那么首先就是制定一个模板. 这样可以减少验证的工作量. 例如时间的规范[yyyy-MM-dd],获取单元格的时 ...

  6. java excel 导入 加校验_【JavaWeb】导入Excel并进行校验

    一.需要实现的目标 1.界面编写 2.导入表读取表名,进行校验,后台匹配(判断此表的名称是否能够模糊匹配上) 3.确定表存在,读取其中的数据,暂存 4.正则表达式数据校验(判断是否已存在,数据是否符合 ...

  7. Excel导入表头名称重复处理 多级表头合并单元格的标题导入数据

    背景 由于业务需求是excel模板不可以修改,但是excel表中的表头是重复的,目前使用的控件会取最后一个赋值,前面的都丢弃了.并且有的表格还是多级表头的情况. 解决办法 使用的是ruoyi框架中的导 ...

  8. java excel 导入 加校验_Java 利用POI进行excel文件导入时校验数据,并且追加错误批注...

    首先拿到前端file控件上传的excel文件,到后台接收!拿到excel这就不多说了网上很多demo的,下面直接说校验单元格追加批注信息的 private void setpz(Workbook wo ...

  9. SpringBoot 项目实现 Excel 导入导出功能

    背景 Excel 导入与导出是项目中经常用到的功能,在 Java 中常用 poi 实现 Excel 的导入与导出.由于 poi 占用内存较大,在高并发下很容易发生 OOM 或者频繁 fullgc,阿里 ...

最新文章

  1. cmake, This may result in binaries being created in the wrong place
  2. Java 对象锁和类锁全面解析
  3. 使用ASP.NET Abstractions增强ASP.NET应用程序的可测试性
  4. 设计模式-行为-观察者
  5. eclipse tomcat插件安装
  6. select语句 rows相等_我去,这两个小技巧,让我的SQL语句不仅躲了坑,还提升了 1000 倍(半分钟干货系列)...
  7. 解决 ImportError: No module named ‘pip._internal‘问题
  8. MSN登录问题:Error 80072ee7
  9. ieee trans pami latex模板
  10. 超市管理系统java代码_java实现简单超市管理系统
  11. pr下载与安装(含安装包百度网盘链接)
  12. html怎么做实心圆,html5如何使用canvas画空心圆与实心圆
  13. 恶意样本分析手册——理论篇
  14. 解决“error C1083: 无法打开包括文件: “HPSocket.h”: No such file or directory”
  15. Halcon实战之MLP颜色匹配(一)
  16. 三子棋编程题(上)--跟着鹏哥,学习C语言打卡第三天!!
  17. 如何扫描远程主机开放的端口?
  18. 林深时见鹿,海蓝时见鲸
  19. 想要转行产品经理,可是社招都要有产品经理相关经验的,该如何转行呢?
  20. PBX220评测报告

热门文章

  1. Vivado错误[Place30-494]
  2. 字体属性-参数图解-基线
  3. 315道面试题【1】
  4. android手机定时截屏软件,手机截图软件哪个好 安卓手机长截图
  5. 手机如何关闭微信“自动扣费”?
  6. 数字电路 模拟电路 先学哪个_数字电路,模拟电路
  7. 基于STM32F103移植华为LiteOS_任务挂起与恢复_面向对象编程思想之按键状态机
  8. 湖北校园网PC端拨号算法逆向
  9. Django admin后台管理页面的常用设置
  10. 面试官:Vue中组件和插件有什么区别?