从excel XSSFCell cell=row.getCell(j)读取时获取空指针异常java;
获取错误:不支持此类型的单元格从excel XSSFCell cell=row.getCell(j)读取时获取空指针异常java;,java,apache-poi,Java,Apache Poi,获取错误:不支持此类型的单元格 我从输入的excel文件中删除了两行数据,然后在它正常工作之前就开始了。但是现在我已经完全删除了这些行,问题是如果没有数据,XSSFCell将null。检查是否为null。调用cellToString()方法后 public void InterestedParty() throws InterruptedException { try { readFile(); } catch (IOException e1) { } }
我从输入的excel文件中删除了两行数据,然后在它正常工作之前就开始了。但是现在我已经完全删除了这些行,问题是如果没有数据,
XSSFCell
将null
。检查是否为null
。调用cellToString()
方法后
public void InterestedParty() throws InterruptedException {
try {
readFile();
} catch (IOException e1) {
}
}
您可以有一个包含数据的行,接下来是一个空行,然后是另一个包含数据的行。如果未定义中间行,则可以将其视为null,因此我的建议是对这些行使用迭代器。
这是一个好的开始。
此外,一旦获得了行,就可以使用单元迭代器对单元进行迭代。请记住,未定义的单元格将被视为null并被跳过,但空单元格不是null!
医生来了。
您的方法也很好,但在处理对象之前,您需要在每次迭代中检查空值或空值。您从哪里获得NPE?。。在哪一行??单元格对象可以为空。我想你可以在cellToString获得npe。你是在那里还是在第行清楚地看到它。getCell(j)一个真正的stacktrace会很有帮助。@paul.cioroianu-他的工作表、书本、行、单元格等可能是空的。@TheLostMind-工作簿和工作表都不是空的。根据他在这里得到的错误XSSFCell cell=row.getCell(j),只有单元格或行可以为null;而且,在调用getCell(j)之前,他必须检查行是否为null。他也可以得到一个空行
public void InterestedParty() throws InterruptedException {
try {
readFile();
} catch (IOException e1) {
}
}
XSSFCell cell = row.getCell(j);
if(cell != null) {
data[i][j] = cellToString(cell);
} else {
// if you would like to set value when cell is null
row.createCell(j).setCellValue(your value);
}