文章目录

  • 一、前言
  • 二、业务需求背景
  • 三、解决思路
  • 四、实现方案
    • 1.引入pom
    • 2.按照解决思路2、3、4进行代码的编写
    • 3.补充贴一下代码中的实体类
    • 4.代码中关键点的说明

一、前言

JAVA中的POI是一个由Apache提供的jar包,用于支持处理Excel、Word、PPT等文件。它是一套用Java编写的免费开源的跨平台的 Java API;用于给Java程序,访问微软格式文档Microsoft Office,读和写的功能的Java API。

二、业务需求背景

项目需要读取excel中部分行列的内容(可以延申为读取一个excel中的内容,并且这个excel中的行数和列数是动态变化的)。然后把读到的内容转化为Json格式的数据。

这是excel文件内容,要将这个文件中的内容读出并转化 为json格式的数据:(这里只是列举部分数据,Json格式已经体现了)

'p10':'3': 0.75'4': 0.428'6': 0.289'8': 0.22'10': 0.191'12': 0.158'14': 0.14'16': 0.125'18': 0.121'20': 0.113
'p20':'3': 0.652'4': 0.412'6': 0.267'8': 0.179'10': 0.141'12': 0.138'14': 0.116'16': 0.109'18': 0.12'20': 0.122

三、解决思路

  1. 把每个单元格当作一个对象,这个对象中包含横坐标,纵坐标,单元格中的数据值。
  2. 找出表头行(也就是第二行,因为第一行中的数据用不到,所以不需要读取,笔者的需求是这样的)。
  3. 找出表头列(也就是第一列)。
  4. 按照要求的格式拼接数据(要求的格式比如说是json或者其他格式进行拼接)。

四、实现方案

1.引入pom

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

2.按照解决思路2、3、4进行代码的编写

         //获取文件路径String filePath = "D:\\TI.xls";File file = new File(filePath);//获取文件后缀String finishFile = filePath.substring(turbulenceCurveFile.lastIndexOf(".") + 1);InputStream inputStream = new FileInputStream(file);//这里需要注意XSSFWorkbook能够处理xlsx的文件//而HSSFWorkbook能够处理xls的文件,不然会报错,这样写是为了更好的兼容处理两种格式Workbook workbook;if ("xlsx".equals(finishFile)) {workbook = new XSSFWorkbook(inputStream);} else {workbook = new HSSFWorkbook(inputStream);}//这里是读取第几个sheetSheet sheet = workbook.getSheetAt(0);//这里是读取总行数int rows = sheet.getPhysicalNumberOfRows();List<CoordinateVO> allList = new ArrayList<>();//1.找到所有的元素对象,然后用list存放for (int i = 1; i < rows; i++) {Row row = sheet.getRow(i);//获取每一行int columns = 0;if (1 == i) {//获取每一行的最后一列的列号,即总列数,这里需要注意一下,//这种方法读取第一行的列数的时候会多读取一列,所以这里要减1columns = row.getLastCellNum() - 1;} else {columns = row.getLastCellNum();}for (int j = 0; j < columns; j++) {//获取每个单元格Cell cell = row.getCell(j);//设置单元格类型cell.setCellType(CellType.STRING);//获取单元格数据String cellValue = cell.getStringCellValue();CoordinateVO coordinateVO = new CoordinateVO();coordinateVO.setCoordinateX(i);coordinateVO.setCoordinateY(j);coordinateVO.setDataValue(cellValue);allList.add(coordinateVO);}}//至此,所有的数据都已经获取完了,并且都存放在allList这个集合当中去了//接下来就是自己去拼接数据格式了,相信各位大佬这里应该没有问题,以下代码就不贴了

3.补充贴一下代码中的实体类

@Data
@AllArgsConstructor
@NoArgsConstructor
public class CoordinateVO {/*** excel中的横坐标*/private Integer coordinateX;/*** excel中的纵坐标*/private Integer coordinateY;/*** excel中的每个单元格的数据值*/private String dataValue;
}

4.代码中关键点的说明

操作Excel包括对象Workbook(工作簿),Sheet(工作表) ,Cell(单元格)。一个Excel就对应一Workbook对象,一个Workbook可以有多个Sheet对象,一个Sheet对象可以有多个Cell对象。

说明:本文是通过poi的方式对excel进行操作,如果想通过jxl的方式对excel进行操作的话,可以点击链接:java使用jxl读取execl中的数据

备注:本文为作者原创作品,有什么不正确的地方希望各位大神能指出不当之处,笔者当虚心受教。不喜勿喷。(转载请说明出处)谢谢!

Java读取excel指定行列的数据(poi的方式)相关推荐

  1. Java读取excel指定行列的数据(通过jxl的方式)

    目录 Java读取Excel指定列的数据详细教程和注意事项(通过jxl的方式) 1.前言 2.注意事项 3.主要的API说明 4.示例代码 Java读取Excel指定列的数据详细教程和注意事项(通过j ...

  2. java读取Excel指定格式的数据

    Excel Version 2003 JDK 1.6 帮朋友做的,弄完后留个印象 代码:有点乱,只为实现功能,没有过多修改调试 import java.io.File; import java.io. ...

  3. java获取xlsx某列数据_Java读取Excel指定列的数据详细教程和注意事项

    本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...

  4. 用python读取excel指定的列数据

    可以使用Python中的Pandas库来帮助你读取Excel指定的列数据.可以使用pandas.read_excel()函数,并指定要读取的列名称:df = pandas.read_excel(文件名 ...

  5. Java读取Excel表格中的数据

    文章目录 前言 一.添加jar包文件 1.在Eclipse工程下新建lib文件夹 2.复制jar包 3.将jar包粘贴到Eclipse中 4.配置构建路径 二.案例代码 1.新建类 2.获取Excel ...

  6. java 读取excel列_Java读取Excel指定列的数据详细教程和注意事项

    本文使用jxl.jar工具类库实现读取Excel中指定列的数据. jxl.jar是通过java操作excel表格的工具类库,是由java语言开发而成的.这套API是纯Java的,并不依赖Windows ...

  7. python读取excel指定行列_pandas读取excel指定行列索引header和index_col参数

    pandas读取excel文件sheet中的数据后会转为DataFrame对象,DataFrame对象是有行索引和列索引的,所以read_excel函数有2个参数来对行列索引进行设置. 1.指定哪一个 ...

  8. Java 读取EXCEL表格中的数据,将数据转为SQL语句

    参考文档 一.需求 存在一个camera表,表中有一个字段叫点位编号,现需要修改该点位编号,用户提供了一个execl表,如下图所示,第2列为原编号,第5列为现编号: 二.解决思路 编码读取execl表 ...

  9. JAVA读取excel表格中的数据,.xlsm文件或者.xlsx文件。

    首先第一步引入jar包或者引入依赖.用的是springboot测试环境.所以我引用的依赖: <dependency><groupId>org.apache.poi</gr ...

最新文章

  1. 程序员成长路上的团队修炼之道
  2. 关于设置GridControl属性在代码中的顺序带来的不同效果
  3. 三层架构下实现用户登陆C#
  4. python init函数可以外部调用么,如何从python类中调用外部函数
  5. Halcon和Opencv的区别?
  6. 机器学习算法、深度学习算法涉及的数学知识
  7. centos7-安装mysql5.6.36
  8. JQuery Datatables editor进行增删改查操作(一)
  9. 【英语学习】【English L06】U07 Jobs L6 I love what I do
  10. 如何理解高并发中的协程?协程的实现和历史
  11. ASP.NET MVC5----了解我们使用的@HTML帮助类
  12. 一起谈.NET技术,ASP.NET的状态管理
  13. Linux/windows下java调用lingo
  14. 《具体数学》部分习题解答2
  15. linux ssh 中文变问号,乱码 解决
  16. Android平板 安装deepin,Deepin系统实体安装
  17. 实用工具---python环境安装注意事项
  18. 关于 Web3.0前端工程师需要具备哪些技术?
  19. 蓝桥杯——种植园问题(prev54)
  20. HyperLynx(二十二)DDR(五)DDRx总线时序模型设计

热门文章

  1. 远程桌面超出最大连接数的解决方法(转)
  2. 密码的离线pojie
  3. html 3d 图片轮播,长方体3D轮播图(CSS3实现)
  4. SAR信号处理之窗函数9——凯泽(Kaiser)窗
  5. Android智能手机编程笔试题,android智能手机编程
  6. 2018 中国城市天气代码
  7. 网络基础12--工程师向
  8. java tr069_tr069 java源码 实现了简单的TR069功能 - 下载 - 搜珍网
  9. k8s admission webhook初探
  10. 笑到爆,产品经理VS大堂经理