引入依赖

    <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. jmeter 取json值_JMeter中JSON数据处理
  2. 通信工程专业的一些小知识点
  3. java 复制剪贴板_java_swing复制粘贴、剪贴板
  4. python opencv显示图片动态_opencv-python计算机视觉图像处理学习笔记2——打开图片,保存图片,显示图片...
  5. java泛型编程_Java编程泛型限定代码分享
  6. c++ 形参用指针 还是对象_Java 和 C/C++两大高手的对比
  7. Pikachu实验过程1(函数报错的信息)
  8. 网络虚拟化基础协议之Geneve
  9. Object-C,NSSet,不可变集合
  10. 正交表的查询地址汇总
  11. 代理猎手(Proxy Hunter)使用详细教程
  12. Python下载qq音乐歌曲实例教程
  13. Windows通过虚拟机的Ubuntu系统安装、配置、管理、远程访问ClickHouse
  14. linux nand 驱动,Linux NAND FLASH驱动分析(一)
  15. vue中怎么把图片转换成base64字符串 , 以及base64字符串怎么转换成图片路径
  16. lastfm 1k user 数据集简介
  17. 卷积层的主要作用_对卷积神经网络CNN的理解,一文读懂卷积神经网络。
  18. commons-codec使用简介
  19. VC++解决Windows快捷方式图标不刷新问题(附源码)
  20. 安全准入考试(配电专业一般工作人员)安规题库(含答案)

热门文章

  1. 19春福是计算机应用基础,19春福师计算机应用基础在线作业二.doc
  2. 几种常用时钟分频实现方法
  3. Jira、confluence和crowd安装文档
  4. 用股票交易量查询接口是怎么查询a股全天总成交量的?
  5. 手机sim卡插到电脑上网_淘汰的手机别扔掉,这样设置变身4G上网卡
  6. WordPress独立后台高端二开黑金壁纸微信小程序源码
  7. 双11阿里数据中心,把机器当“媳妇”的守夜者
  8. 2021年G2电站锅炉司炉考试题及G2电站锅炉司炉新版试题
  9. 51nod题解 1005 大数加法
  10. python实现果蝇优化算法(FOA算法)