我正在编写一个使用excel文件的程序。
在这种方法中,我想迭代" I" excel中的列(我将其命名为COLUMN_MINUTE
并使用。convertColStringToIndex()
以便我可以更轻松地使用该程序)并找到大于int minute
参数的数字的第一次出现。
但是,这会返回一个Null指针异常。
XSFFSheet初始化如下:
File excelFile = new File ("C:\\Users\\vidon\\Desktop\\myFile.xlsx");
FileInputStream inputStream = null;
try {
inputStream = new FileInputStream (excelFile);
XSSFWorkbook workbook = new XSSFWorkbook(inputStream);
XSSFSheet sheet = workbook.getSheet(SHEET_NAME);
int minuteEndsOnRow = 0;
try {
minuteEndsOnRow = getRowWithMinute (sheet, minute); //change here
} catch (Exception ex) {
Logger.getLogger(ExcelReader.class.getName()).log(Level.SEVERE, null, ex);
}
(....)
} catch (IOException e) {
e.printStackTrace();
}
finally {
try {
if (inputStream != null) {
inputStream.close();
}
}
catch (IOException ex) {
ex.printStackTrace();
}
}
虽然方法本身看起来像这样。
public int getRowWithMinute (XSSFSheet sheet, int minute) throws Exception {
int cellValue = -1;
int row = 1;
XSSFCell cell;
for (row=1; cellValue < minute; row++) {
cell = sheet.getRow(row).getCell(CellReference.convertColStringToIndex(COLUMN_MINUTE));
switch (cell.getCellTypeEnum()) {
case NUMERIC:
cellValue = (int) cell.getNumericCellValue();
break;
case STRING:
String cv = (String) cell.getStringCellValue();
cellValue = Integer.valueOf(cv);
break;
default:
throw new Exception ("CellValue is not numeric or string.");
}
}
return row;
}
导致异常的原因是什么?
STACK TRACE:`
INFO:打开连接[connectionId {localValue:6,serverValue:20}]到127.0.0.1:27017 2017年10月21日上午3:15:56 utils.ExcelReader readExcel SEVERE:null java.lang.NullPointerException at utils.ExcelReader.getRowWithMinute(ExcelReader.java:203)at utils.ExcelReader.readExcel(ExcelReader.java:76)at utils.StatisticsJSONBuilder.updateData(StatisticsJSONBuilder.java:199) 在JsonBuilderTest.main(JsonBuilderTest.java:46)
ExcelReader.java:203是我定义的行
cell = sheet.getRow(row).getCell(CellReference.convertColStringToIndex(COLUMN_MINUTE));