java使用POI获取excel的行数和列数

我们要操作的1.xlsx是一个三行三列的表格

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

import org.apache.poi.sl.usermodel.Sheet;
import org.apache.poi.ss.usermodel.Cell;
import org.apache.poi.ss.usermodel.Row;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

//使用POI获取excel的行数和列数
public class test2 {
	public static void main(String[] args) throws IOException {
		try {
			FileInputStream fis = new FileInputStream("D:\\1.xlsx");
			XSSFWorkbook workbook =  new XSSFWorkbook(fis);
			 XSSFSheet sheet = workbook.getSheetAt(0);
			 int firstRowNum = sheet.getFirstRowNum();
			 int lastRowNum = sheet.getLastRowNum();
			 Row firstRow = sheet.getRow(firstRowNum);
			 int firstCellNum = firstRow.getFirstCellNum();
			 int lastCellNum = firstRow.getLastCellNum();
			 System.out.println("第一行行号:" + firstRowNum);
			 System.out.println("最后一行行号:" + lastRowNum);
			 System.out.println("第一列列号:" + firstCellNum);
			 System.out.println("最后一列列号:" + lastCellNum);
			 for(int i = firstRowNum; i <= lastRowNum; i++) {
				 for(int j = firstCellNum; j < lastCellNum; j++) {
					 System.out.print(sheet.getRow(i).getCell(j).getNumericCellValue() + " ");
				 }
				 System.out.println("\n");
			 }
		} catch (FileNotFoundException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}	
}

输出结果如下:

由此我们可以看到
无论是行号还是列号,都是从0开始
但是最后一行的行号和最后一列的列号有所区别
对于行来说,最后一行的行号加1等于excel表的行数
对于列来说,最后一列的列号即等于excel表的列数。
但是这并不代表最后一个列号所在的列里有数据。
当我使用最后一个列号去拿数据时,发现报java.lang.NullPointerException异常,说明excel表lastCellNum所在的列并没有数据。

posted @   轩辕吊雷  阅读(16197)  评论(0编辑  收藏  举报
编辑推荐:
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
点击右上角即可分享
微信分享提示