我們要操作的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所在的列並沒有數據。