poi 读取 excel 总行数 ,总列数 注意事项 lastRowNum 、lastCellNum

一、概述

1、如下图,有一个 4行 3列的excel 表格数据,用 poi 读取后,分别获取 最大行号 和 列号, 预期是的: 行数为4,列数为3 ; 而实际却是: 行数 和 列数都是 3 .

二、大概代码

1、读取excel 文件代码

public static void main(String[] args) throws IOException, InvalidFormatException {String path ="/excel模板-内容修改.xlsx";InputStream in = ExcelCellUpdateTest.load(path);Workbook workbook = WorkbookFactory.create(in);Sheet sheet = workbook.getSheetAt(0);for (Row row : sheet) {}int firstRowNum = sheet.getFirstRowNum();int lastRowNum = sheet.getLastRowNum();System.out.println("firstRowNum =" + firstRowNum + " \t lastRowNum="+lastRowNum);Row row0 = sheet.getRow(0);int rowNum = row0.getRowNum();System.out.println("rowNum = "+ rowNum);short lastCellNum = row0.getLastCellNum();short firstCellNum = row0.getFirstCellNum();int physicalNumberOfCells = row0.getPhysicalNumberOfCells();System.out.println("firstCellNum= "+firstCellNum + "\t lastCellNum = "+ lastCellNum +  " \t physicalNumberOfCells="+physicalNumberOfCells);for (int i = 0; i <= lastRowNum; i++) {Row row = sheet.getRow(i);for (int j = 0; j < lastCellNum; j++) {Cell cell = row.getCell(j);String s = null ;if(Objects.nonNull(cell)){s = cell.toString();}System.out.print("cell num :"+ j + " cell val :"+ s +" \t");}System.out.println();}
}

1.1、输出结果:

firstRowNum =0   lastRowNum=3
rowNum = 0
firstCellNum= 0     lastCellNum = 3    physicalNumberOfCells=3
cell num :0 cell val :姓名    cell num :1 cell val :年龄    cell num :2 cell val :addr
cell num :0 cell val :小明    cell num :1 cell val :18.0  cell num :2 cell val :北京市
cell num :0 cell val :小红    cell num :1 cell val :22.0  cell num :2 cell val :中国
cell num :0 cell val :小刚    cell num :1 cell val :33.0  cell num :2 cell val :朝阳区

三、总结

1、poi 读取excel文件中, 起始 行号 和 列号,都是 0 开始 ( firstRowNum =0 / firstCellNum= 0); 总行号计数: 从 0 开始计数,总行数应该为: lastRowNum+1 ,实际显示的结果是:总行数-1 ,在循环读取行数的时候,应该注意:

for (int i = 0; i <= lastRowNum; i++) {// 应该是: <= 等于}

或者:

for (int i = 0; i < lastRowNum+1 ; i++) {// 应该是:  lastRowNum+1}

否则不能读取全部的行数!

2、总列号计数:从1开始计数,总列数 = lastCellNum ; 和实际总列数是一致的,无需特别处理。 因 起始 行号 和 列号,都是 0 开始 ,所以读取列数的时候,常规读取即可,如下:

for (int j = 0; j < lastCellNum; j++) {}

更多是poi excel 相关知识:

1、 https://thinkcode.blog.csdn.net/article/details/105232822

2、https://thinkcode.blog.csdn.net/article/details/126602426

poi 读取 excel 总行数 ,总列数 注意事项 lastRowNum 、lastCellNum相关推荐

  1. pandas读取excel文档,每列标题及标题下的内容,总行数,总列数

    pandas读取excel文档,每列标题及标题下的内容,总行数,总列数 import pandas'''''' # file_path为excel的文件路径 def read_excel(file_p ...

  2. Py之Xlrd:Xlrd简介、安装、使用方法(读取xlsx文件的shee表头名/总行数/总列数、每一行的内容、指定列的内容)之详细攻略

    Py之Xlrd:Xlrd简介.安装.使用方法(读取xlsx文件的shee表头名/总行数/总列数.每一行的内容.指定列的内容)之详细攻略  导读      xlrd,xlwt和xlutils是用Pyth ...

  3. poi读取excel模板,并填充数据

    一.POI介绍 Apache POI是Apache软件基金会的开放源码函式库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能. 基本功能: HSSF - 提供读写 ...

  4. Uibot-Excel自动获取某个工作表的总行数、总列数,读取其全部内容

    背景: Uibot自带的Excel读取区域,需要自己手动设置读取区域的范围,如果excel文件区域的范围发生了变化,就又需要手动修改,挺麻烦的.Uibot的资料不多,搜了很久没能解决问题,所以,无奈之 ...

  5. 根据用户输入的总行数(奇数),打印出菱形(总行数与总列数相等)。

    [题目描述] 根据用户输入的总行数(奇数),打印出菱形(总行数与总列数相等). [输入] 一个整数n. [输出] 指定格式的菱形. [样例输入] 11↙ [样例输出] * *** ***** **** ...

  6. DataGrid控件读取具体某行某列的值、获取总列数

    WPF中的datagrid控件获取总列数的函数是Items.Count来获取. 以下代码是循环获取各行第二列的数据,并存放在一个名为TX的Textbox控件中: for (int i = 0; i & ...

  7. poiexcel 读取引用列_java用poi读取Excel表格中的数据

    Java读写Excel的包是Apache POI(项目地址:http://poi.apache.org/),因此需要先获取POI的jar包,本实验使用的是POI 3.9稳定版. Apache POI ...

  8. java使用POI获取sheet、行数、列数

    FileInputStream inp = new FileInputStream("E:\\WEIAN.xls"); HSSFWorkbook wb = new HSSFWork ...

  9. vba根据列名获取列号 获取总列数 求和

    Sub get()'获取总行数total_row = Range("a65536").End(xlUp).Rowtotal_row = ActiveSheet.UsedRange. ...

最新文章

  1. 什么是跨域?怎么解决跨域问题?
  2. 历史有资产忘记折旧如何处理_紧急提醒! 500万以下固定资产一次性计入“管理费用”的,会计抓紧调账!...
  3. 坑系列 —— 缓存+哈希=高并发?
  4. wxWidgets:wxGraphicsRenderer类用法
  5. xfce的面板调节声音大小的按钮不见了。
  6. lightswitch 添加 TreeView 控件
  7. 微信支付分使用用户数超2.4亿 每日使用笔数达千万级
  8. mysql federated engine
  9. 集合set中的基数cardinality是什么意思
  10. Maven入门实战笔记-11节[7-11]
  11. 在IDEA中玩转DEBUG模式,有BUG不会调试?不存在的。
  12. TheFatRat一般使用
  13. 第3章-线性概率模型(1)-logistics/probit模型
  14. VS软件版本号定义、规则和相关的Visual Studio插件
  15. CleanMyMac2022免费版MAC内存清理空间软件
  16. Matlab微分方程求解
  17. BZOJ2144: 跳跳棋
  18. [Python图像识别] 四十七.Keras深度学习构建CNN识别阿拉伯手写文字图像
  19. java imageio temp_Java ImageIO.setUseCache方法代碼示例
  20. 计算机无法加载加密文件,win10电脑加密,win10加密文件无法解密

热门文章

  1. 算法之路--高斯分布(一)
  2. ARM存储器之:协处理器CP15
  3. StrictMode ——Android性能调优的利器
  4. 吃得不对,骨骺提前闭合类似“拔苗助长”,反而长不高
  5. 日常python 助一臂之力
  6. 传真服务器软件产品的选择
  7. Android 10.0 Launcher3 电话和短信app图标显示未读短信和未接来电的条数
  8. 戴尔计算机软件方面的成就,笔记本电脑推荐:戴尔全能本成就7000符合年轻商务群体审美 保持高效工作...
  9. 【新】华为OD机试 - 数据分类(Python)| 刷完获取OD招聘渠道
  10. Oracle EBS WebADI的配置(IE+Excel)