首先引入poi相关依赖包

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

然后编写代码

package com.match.easyExcel;import org.apache.poi.hssf.usermodel.*;
import org.springframework.stereotype.Component;import java.io.FileInputStream;
import java.text.SimpleDateFormat;
import java.util.*;/*** @author xf* @version 1.0* @ description: excel读取数据工具类* @ date 2021/7/8 14:58*/
@Component
public class ExcelHSSFReadUtil {/*** @ description:  读取excel数据* @param inputStream 文件流* @ return: java.util.List<java.util.Map<java.lang.String,java.lang.Object>>* @author xf* @ date: 2021/7/8 15:12*/public static List<List<Map<String,Object>>> readExcel(FileInputStream inputStream){if(inputStream == null){return null;}HSSFSheet sheet;List<List<Map<String,Object>>> resultList = new ArrayList<>();try{// 通过poi解析流中的workbookHSSFWorkbook workbook = new HSSFWorkbook(inputStream);// 获取所有workbook中的sheet工作表数量int number = workbook.getNumberOfSheets();for (int i = 0; i < number; i++){// 获取到每一个sheet工作表sheet = workbook.getSheetAt(i);// 根据sheet获取数据List<Map<String,Object>> data = getData(sheet);resultList.add(data);}}catch (Exception e){e.printStackTrace();}return resultList;}public static List<Map<String,Object>>  getData(HSSFSheet sheet){List<Map<String,Object>> list = new ArrayList<>();Map<String,Object> content;HSSFRow row;// 得到总行数int rowNum = sheet.getLastRowNum();HSSFRow firstRow = sheet.getRow(0);//读取数据从1开始row = sheet.getRow(1);int colNum = row.getPhysicalNumberOfCells();// 正文内容应该从第一行开始,下标从0开始for (int i = 1; i <= rowNum; i++) {row = sheet.getRow(i);content = new HashMap<>();int j = 0;while (j < colNum) {content.put(getStringCellValue(firstRow.getCell(j)), getCellFormatValue(row.getCell((short) j)).trim());j++;}list.add(content);}return list;}/*** @ description:  获取单元格数据内容为字符串类型的数据* @param cell 单元格* @ return: java.lang.String* @ author xf* @ date: 2021/7/8 15:16*/private static String getStringCellValue(HSSFCell cell) {String strCell = "";switch (cell.getCellType()) {case HSSFCell.CELL_TYPE_STRING:strCell = cell.getStringCellValue();break;case HSSFCell.CELL_TYPE_NUMERIC:strCell = String.valueOf(cell.getNumericCellValue());break;case HSSFCell.CELL_TYPE_BOOLEAN:strCell = String.valueOf(cell.getBooleanCellValue());break;case HSSFCell.CELL_TYPE_BLANK:strCell = "";break;default:strCell = "";break;}if (strCell.equals("") || strCell == null) {return "";}if (cell == null) {return "";}return strCell;}/*** 根据HSSFCell类型设置数据* @param cell* @return*/private static String getCellFormatValue(HSSFCell cell) {String cellvalue = "";if (cell != null) {// 判断当前Cell的Typeswitch (cell.getCellType()) {// 如果当前Cell的Type为NUMERICcase HSSFCell.CELL_TYPE_NUMERIC:case HSSFCell.CELL_TYPE_FORMULA: {// 判断当前的cell是否为Dateif (HSSFDateUtil.isCellDateFormatted(cell)) {Date date = cell.getDateCellValue();SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");cellvalue = sdf.format(date);}// 如果是纯数字else {// 取得当前Cell的数值cellvalue = String.valueOf(cell.getNumericCellValue());}break;}// 如果当前Cell的Type为STRINcase HSSFCell.CELL_TYPE_STRING:// 取得当前的Cell字符串cellvalue = cell.getRichStringCellValue().getString();break;// 默认的Cell值default:cellvalue = " ";}} else {cellvalue = "";}return cellvalue;}
}

HSSF 读取excel相关推荐

  1. java word 读取excel数据_在Java中实现读写操作Word、Excel等文件

    Jakarta的POI项目提供了一组操纵Windows文档的Java API,如下几个类提供了操作Excel文件的方便的途径:HSSFWorkbook.HSSFSheet.HSSFRow.HSSFCe ...

  2. form表单提交,Servlet接收并读取Excel文件

    首先是jsp页面: <body scroll=no style="overflow-y:hidden;" onselectstart="return false&q ...

  3. java如何读取excel文件

    我在测试的时候经常需要去改动case,如果把所有case直接写在单元测试中,非常冗余,我希望可以直接从excel去读取我的测试数据,经过几次试验终于成功了,读取excel主要借助poi jar包,源码 ...

  4. 读取EXCEL文件内容

    2019独角兽企业重金招聘Python工程师标准>>> package org.bigdata.framework.admin.web.util;import java.io.Fil ...

  5. NPOI 导入Excel和读取Excel

    1.整个Excel表格叫做工作表:WorkBook(工作薄),包含的叫页(工作表):Sheet:行:Row:单元格Cell. 2.NPOI是POI的C#版本,NPOI的行和列的index都是从0开始 ...

  6. poi excel mysql_java的poi技术读取Excel数据到MySQL

    这篇blog是介绍java中的poi技术读取Excel数据,然后保存到MySQL数据中. 你也可以在 :java的poi技术读取和导入Excel了解到写入Excel的方法信息 使用JXL技术可以在 : ...

  7. java利用poi读取excel_java利用POI 读取EXCEL

    /* * 使用POI读取EXCEL文件 */ import java.io.File; import java.io.FileInputStream; import java.util.ArrayLi ...

  8. 使用POI读取excel文件内容

    1.前言 项目中要求读取excel文件内容,并将其转化为xml格式.常见读取excel文档一般使用POI和JExcelAPI这两个工具.这里我们介绍使用POI实现读取excel文档. 2.代码实例: ...

  9. java读取excel数据_Java读取Excel内容(转)

    借助于apathe的poi.jar,由于上传文件不支持.jar所以请下载后将文件改为.jar,在应用程序中添加poi.jar包,并将需要读取的excel文件放入根目录即可 本例使用java来读取exc ...

最新文章

  1. c语言打印一个整数的二进制形式
  2. 深入解读EOS源代码之——区块链内核
  3. CISP-PTE注册信息安全专业人员渗透测试工程师知识体系大纲
  4. linux在python的虚拟环境下运行程序_在win10和linux上分别安装Python虚拟环境的方法步骤...
  5. iOS开发日记49-详解定位CLLocation
  6. Linux下conda镜像源配置
  7. buildroot 文件系统添加telnet, ssh, 以及制作注意事项
  8. 右键新建文件夹_教你修改Windows万年不变的黄色文件夹,让文件也不枯燥
  9. 非因解读 | Multiplex immunofluorescnece-多重免疫荧光结合单细胞蛋白组技术探索肿瘤微环境
  10. 详解Dijkstra算法(含数学证明和优化)
  11. 手把手带你用Python完成一个数据分析项目,能写进简历,拿走不谢!(另送15个实战案例)...
  12. 简历上的项目经历怎么写 ?这 3 条原则不可忽视 !...
  13. 换计算机硬盘分区,笔记本提速,换硬盘,分区,系统迁移,装机!
  14. Envoy代理GRPC服务支持通过restful进行访问
  15. 个人对价值观的认识与感受
  16. 行为识别数据集 Kinetics
  17. 03. 交换机的Telnet远程登陆配置
  18. 使用Jsch执行Shell脚本
  19. 华为鸿蒙系统到底能否使用,【图片】华为鸿蒙系统的厉害之处在于 你可能非用不可 !【手机吧】_百度贴吧...
  20. 计算机屏幕闪烁黑屏,显示器屏幕一闪一闪的黑屏怎么办_电脑屏幕黑屏一闪一闪如何解决...

热门文章

  1. 白云一键重装系统 v3.1.14 官方版
  2. 民营投资者投资不良资产 风险何在
  3. 据说80%的人都不懂,你会控制你的债务吗?
  4. Excel中mid函数的用法
  5. 计算机作文 六年级,描写电脑作文六年级
  6. 数据分析之excel(一)快捷键/绝对,相对引用/替换查找和日期函数
  7. 千锋学习的33天:网络编程
  8. 用python求素数的方法,以及一种算法优化
  9. 跑步需要哪些运动装备?跑步爱好者者的装备推荐
  10. 一个衡中走出的小程序员