excel导入表头校验
引入依赖
<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导入表头校验相关推荐
- excel导入数据校验_从Excel数据验证列表中选择多个项目
excel导入数据校验 You've probably used an Excel data validation drop down list, where you can click the ar ...
- excel导入数据校验_Excel数据验证更新
excel导入数据校验 I've finally updated my Data Validation intro video, so it shows the steps for creating ...
- excel导入数据校验_使用Excel数据验证限制日期范围
excel导入数据校验 Yesterday, one of my clients emailed to let me know that she was having trouble entering ...
- excel导入数据校验_Excel数据验证错误消息
excel导入数据校验 Do you like to use error checking in Excel, so that problem cells are flagged, or do you ...
- java excel 导入 加校验_POI实现excel各种验证和导入的思路总结
制定标准 导入总是与导出相辅相成的,无规矩不成方圆.所谓的标准都是大家一同来维护和遵守的,那么首先就是制定一个模板. 这样可以减少验证的工作量. 例如时间的规范[yyyy-MM-dd],获取单元格的时 ...
- java excel 导入 加校验_【JavaWeb】导入Excel并进行校验
一.需要实现的目标 1.界面编写 2.导入表读取表名,进行校验,后台匹配(判断此表的名称是否能够模糊匹配上) 3.确定表存在,读取其中的数据,暂存 4.正则表达式数据校验(判断是否已存在,数据是否符合 ...
- Excel导入表头名称重复处理 多级表头合并单元格的标题导入数据
背景 由于业务需求是excel模板不可以修改,但是excel表中的表头是重复的,目前使用的控件会取最后一个赋值,前面的都丢弃了.并且有的表格还是多级表头的情况. 解决办法 使用的是ruoyi框架中的导 ...
- java excel 导入 加校验_Java 利用POI进行excel文件导入时校验数据,并且追加错误批注...
首先拿到前端file控件上传的excel文件,到后台接收!拿到excel这就不多说了网上很多demo的,下面直接说校验单元格追加批注信息的 private void setpz(Workbook wo ...
- SpringBoot 项目实现 Excel 导入导出功能
背景 Excel 导入与导出是项目中经常用到的功能,在 Java 中常用 poi 实现 Excel 的导入与导出.由于 poi 占用内存较大,在高并发下很容易发生 OOM 或者频繁 fullgc,阿里 ...
最新文章
- jmeter 取json值_JMeter中JSON数据处理
- 通信工程专业的一些小知识点
- java 复制剪贴板_java_swing复制粘贴、剪贴板
- python opencv显示图片动态_opencv-python计算机视觉图像处理学习笔记2——打开图片,保存图片,显示图片...
- java泛型编程_Java编程泛型限定代码分享
- c++ 形参用指针 还是对象_Java 和 C/C++两大高手的对比
- Pikachu实验过程1(函数报错的信息)
- 网络虚拟化基础协议之Geneve
- Object-C,NSSet,不可变集合
- 正交表的查询地址汇总
- 代理猎手(Proxy Hunter)使用详细教程
- Python下载qq音乐歌曲实例教程
- Windows通过虚拟机的Ubuntu系统安装、配置、管理、远程访问ClickHouse
- linux nand 驱动,Linux NAND FLASH驱动分析(一)
- vue中怎么把图片转换成base64字符串 , 以及base64字符串怎么转换成图片路径
- lastfm 1k user 数据集简介
- 卷积层的主要作用_对卷积神经网络CNN的理解,一文读懂卷积神经网络。
- commons-codec使用简介
- VC++解决Windows快捷方式图标不刷新问题(附源码)
- 安全准入考试(配电专业一般工作人员)安规题库(含答案)
热门文章
- 19春福是计算机应用基础,19春福师计算机应用基础在线作业二.doc
- 几种常用时钟分频实现方法
- Jira、confluence和crowd安装文档
- 用股票交易量查询接口是怎么查询a股全天总成交量的?
- 手机sim卡插到电脑上网_淘汰的手机别扔掉,这样设置变身4G上网卡
- WordPress独立后台高端二开黑金壁纸微信小程序源码
- 双11阿里数据中心,把机器当“媳妇”的守夜者
- 2021年G2电站锅炉司炉考试题及G2电站锅炉司炉新版试题
- 51nod题解 1005 大数加法
- python实现果蝇优化算法(FOA算法)