poiexcel 读取引用列_java使用POI获取excel的行数和列数

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

poiexcel 读取引用列_java使用POI获取excel的行数和列数_第1张图片

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();

}

}

}

输出结果如下:

poiexcel 读取引用列_java使用POI获取excel的行数和列数_第2张图片

由此我们可以看到

无论是行号还是列号,都是从0开始

但是最后一行的行号和最后一列的列号有所区别

对于行来说,最后一行的行号加1等于excel表的行数

对于列来说,最后一列的列号即等于excel表的列数。

但是这并不代表最后一个列号所在的列里有数据。

当我使用最后一个列号去拿数据时,发现报java.lang.NullPointerException异常,说明excel表lastCellNum所在的列并没有数据。

你可能感兴趣的:(poiexcel,读取引用列)