1.导入依赖

<dependency><groupId>org.apache.poi</groupId><artifactId>poi</artifactId><version>3.15</version>
</dependency>
<dependency><groupId>org.apache.poi</groupId><artifactId>poi-ooxml</artifactId><version>3.15</version>
</dependency>

2.获取数据

2.1.获取信息工具类

import com.xxl.job.core.util.DateUtil;import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.time.Instant;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.*;import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.ss.usermodel.*;
import org.apache.poi.ss.util.CellRangeAddress;
import  org.apache.poi.xssf.usermodel.XSSFWorkbook;/*** @author abup* @date 2021/7/9 11:06*/
public class ExcelUtils {/*** 获取 Excel 文件表头信息** @param fileUrl* @return* @throws Exception*/public Set<String> getExcelHeaders(String fileUrl) throws Exception {File file = new File(fileUrl);InputStream is = new FileInputStream(file);Workbook workbook = new XSSFWorkbook(is);Sheet sheet = workbook.getSheetAt(0);System.out.println(sheet.getLastRowNum());//获取 excel 第一行数据(表头)Row row = sheet.getRow(0);//存放表头信息Set<String> set = new HashSet<>();//算下有多少列int colCount = sheet.getRow(0).getLastCellNum();System.out.println(colCount);for (int j = 0; j < colCount; j++) {Cell cell = row.getCell(j);String cellValue = cell.getStringCellValue().trim();set.add(cellValue);}return set;}/*** 获取 Excel 文件信息(除去表头)** @param fileUrl* @return* @throws Exception*/public List<List<String>> getExcelData(String fileUrl) throws Exception {File file = new File(fileUrl);InputStream is = new FileInputStream(file);Workbook workbook = new XSSFWorkbook(is);Sheet sheet = workbook.getSheetAt(0);//获取 Excel 中 sheet 的行数int rowNum = sheet.getLastRowNum();List<List<String>> resList = new ArrayList<>();//负责标记检测到空行时,跳过boolean flag = false;for (int i = 1; i <= rowNum; i++) {//默认认为此行为空行flag = true;Row row = sheet.getRow(i);//过滤空行if (row == null) {continue;}//创建列表,负责装纳一行数据List<String> list = new ArrayList<>();//获取列数int colCount = sheet.getRow(i).getLastCellNum();for (int j = 0; j < colCount; j++) {//获得制定空格Cell cell = row.getCell(j);String cellValue = "";//如果存在空格内有内容,就将标志位设置为 false,表示这一行不是空行if(!(cell == null)){cellValue = getStringCellValue(cell);if(!"".equals(cellValue)){flag = false;}}list.add(cellValue);}if(!flag){resList.add(list);}else{continue;}}return resList;}/*** 获取单元格数据内容为字符串类型的数据* @param cell Excel单元格* @return String 单元格数据内容*/public static String getStringCellValue(Cell cell) {String strCell = "";if (cell == null) {return "";}switch (cell.getCellType()) {case Cell.CELL_TYPE_STRING:strCell = cell.getStringCellValue().trim();break;case Cell.CELL_TYPE_NUMERIC:strCell = String.valueOf(cell.getNumericCellValue()).trim();break;case Cell.CELL_TYPE_BOOLEAN:strCell = String.valueOf(cell.getBooleanCellValue()).trim();break;case Cell.CELL_TYPE_BLANK:strCell = "";break;default:strCell = "";break;}if (strCell.equals("") || strCell == null) {return "";}return strCell;}
}

poi 获取解析 excel 获取表头信息以及内容相关推荐

  1. Java解析Excel 获取文本和图片信息

    1.引入jar package org.apache.poi.hssf.usermodel; package org.apache.poi.ooxml; package org.apache.poi. ...

  2. 解析Excel获取单元格数据

    今天自己写了一遍解析Excel的方法,虽然也是根据网上一些例子来写的,但是一边写一边在网上查找这些类.方法的含义及左右,感觉还是有所收获的.记录一下以后方便使用. private static fin ...

  3. java 获取解析excel中的图片

    以xlsx2007的excel为例 //获取整个文档 XSSFWorkbook wb; // 页 XSSFSheet sheet;//表 // 行 XSSFRow row;//行 // 打开文件 tr ...

  4. java 解析excel获取单元格内容封装方法(兼容2003和2007)

    支持xls2003及xlsx2007导入excel //导入excel接口 @RequestMapping(params = "importDecMainCode", method ...

  5. Poi导入Excel校验表头

    我们在日常的开发过程中,poi导入数据要根据注解的列名和顺序进行识别,那么首先要校验模版的正确与否,即表头是否正确,然后才能开始数据和业务层面的校验,最近也是被这个东西烦的不行,解决后记录一下,一个是 ...

  6. 使用poi解析Excel

    使用poi来解析Excel的xls和xlsx. 解析xls: Java代码   package xls; import java.io.FileInputStream; import java.io. ...

  7. div中内容靠右_python读取excel的公司名称信息,并爬虫获取公司的经营范围信息,回填到excel中...

    大家总说,python今天学明天忘,没有实际操作,想要知道哪里有练手的机会.其实你要善于发现问题,捕捉问题.不管是你看到文章中的一些案例,还是微信群友问的一个问题.你都需要仔细思考,如果是你做你应该怎 ...

  8. python读取excel的公司名称信息,并爬虫获取公司的经营范围信息,回填到excel中

    本文作者:是老王吖 原文链接:https://blog.csdn.net/jdkss/article/details/106077755?utm_source=app 1.项目需求 项目需求:这个问题 ...

  9. 获取extjs 选择后的表头_批量写入审计底稿的表头信息设定页面

    做审计底稿的时候,需要把这个表粘贴很多遍,太麻烦了,所以我想利用vba批量完成这个操作.我是从批量打印里获得的灵感.首先给大家看一下 张翰博​www.zhihu.com 写的批量打印的内容 1Sub ...

最新文章

  1. TCP的三次握手、四次挥手,含泪整理面经
  2. 转 容器生态系统 (续) - 每天5分钟玩转容器技术(3)
  3. 09_Android中ContentProvider和Sqllite混合操作,一个项目调用另外一个项目的ContentProvider
  4. 操作系统的起源|开源运动的兴起
  5. 吴恩达《机器学习》学习笔记四——单变量线性回归(梯度下降法)代码
  6. ElasticSearch D3
  7. Android 系统 (130)---ODM 开发用户常见需求文档(四)
  8. 正则表达式 转义字符
  9. OpenCv图像像素操作
  10. 微信小程序商城后台服务器,首先【基础配置】:完成小程序关联商城后台及配置微信支付...
  11. 彩色图像和灰色图像的区别
  12. 通过Frp内网穿透和Nginx反向代理实现不带端口号访问家里内网服务器网站
  13. 作为一个程序员对特修斯之船的理解
  14. 嵌入式系统python开发_嵌组词_嵌的拼音含义_组词造句解释_嵌字的组词
  15. MySQL中联合索引问题,
  16. 【转】用IDCNN和CRF做端到端的中文实体识别
  17. Linux查看服务器的cpu和内存的硬件信息
  18. AD账号属性的 PwdLastSet 和 PasswordLastSet 有什么区别?
  19. maven自定义archetype
  20. iOS证书申请打包上传App Store审核完整流程(7个步骤)

热门文章

  1. python求1到100偶数和_python 求1-100之间的奇数或者偶数之和的实例
  2. Vue React大屏可视化进阶
  3. vue自定义表格(每一列表格下面包含一个子表格)
  4. 大数据工具主要分为哪几类,每类中具体有哪些工具?
  5. 为什么说美团的天花板是美团自己?
  6. 写公众号的一些【奇葩经历】以及【思考】
  7. excel表格合并程序
  8. 团组织关系的转接流程
  9. 已有一个排好序的数组,今输入一个数,要求按原来排序的规律将它插入数组中
  10. MTK平台双击Power打开Camera的简单流程