提问者:小点点

使用IntellijJavaApache Poi,如何摆脱从Excel文件读取非空整数值的java. lang.nullpointerxcept[重复]


我想使用Intellij和Apache Poi在单元格A1和A2中读取两个整数值100和200。

问题:我在下面的num1行得到了java. lang.nullpointerx的概念。

我已经检查过我是否添加了apache poi jar并添加了正确的导入指令。Excel行和列索引从1开始。因此,getRow(1). getCell(1)引用单元格A1。此外,getSheetAt(0)引用了我在Excel文件中的第一个也是唯一一个工作表。

import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import java.io.File;
import java.io.FileInputStream;
import java.lang.Exception;

int num1, num2, sum1;

File src=new File("C:/test/testdata.xlsx");
FileInputStream fis=new FileInputStream(src);
XSSFWorkbook wb=new XSSFWorkbook(fis);
XSSFSheet sheet = wb.getSheetAt(0);
num1 = Integer.parseInt(sheet.getRow(1).getCell(1).getStringCellValue());
num2 = Integer.parseInt(sheet.getRow(2).getCell(1).getStringCellValue());
sum1 = num1 + num2;
System.out.println("The sum: " + sum1);

成功运行代码时,我应该会看到num1和num2从excel文件中填充,并且总和打印在控制台中。


共1个答案

匿名用户

在ApachePOI读取Excel文件时,除了编码的其他部分,您必须按以下方式处理。

Cell cell = sheet.getRow(1).getCell(1); 
if (cell.getCellTypeEnum() == CellType.STRING) {
    //write logic to handle
}
else if (cell.getCellTypeEnum() == CellType.NUMERIC) {
    //write logic to handle
}

您还需要检查cell是否存在,您可以进行空检查。