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. 怎么将导出的sql文件再次导入到数据库?
  3. python类属性描述_如何描述Python对象,以及属性、标识、类型和值之间的关系?...
  4. Qt Creator导出3D资产Exporting 3D Assets
  5. B. Product(2019ICPC西安邀请赛)(杜教筛)
  6. 还可以这样玩?揭秘打通线上线下新思路
  7. 我的软件项目过程管理经验
  8. 11款样式新颖的 jQuery/CSS3 网页菜单
  9. WordPress国外开源主题Enigma h1、h2、h3……标题不显示的解决办法
  10. 2.Prometheus 监控技术与实践 --- Prometheus基本概念及部署
  11. PS(Photoshop)常用快捷键使用大全
  12. 如何在Word中画横线?
  13. 微版权:用区块链破解数字版权登记难题,为原创图文知识产权保驾护航
  14. XP硬盘读写速度很慢的解决方法
  15. matlab生成高速轨道不平顺谱,国内外高速铁路轨道不平顺谱对比与思考.pdf
  16. matlab中求叠加平均,eeglab教程系列(6)-数据叠加平均{1}(Data averaging)
  17. 顺序栈栈顶指针指向详析
  18. 通过位运算来进行2的幂运算
  19. opencv 打开网络摄像头
  20. 计算机应用的高级职称,职称计算机应用能力要求相关政策规定

热门文章

  1. 解决关于“这个压缩文件格式未知或者数据已经被损坏”
  2. 【Leedcode】环形链表必备的面试题和证明题(附图解)
  3. iOS(swift):将相册里的资源复制到本地APP
  4. Android Studio上方便使用butterknife注解框架的偷懒插件Android Butterknife Zelezny
  5. 大数据(9e)Flink侧输出流
  6. Java设计模式之再从[暗黑破坏神装备镶嵌宝石系统]分析装饰(Decorator)模式
  7. 中国互联网10大平台
  8. layerUI下的绑定事件
  9. Mac中用Excel导入csv文件出现乱码
  10. HashMap:为什么容量总是为2的次幂