我有一个看起来像这样的 Excel 文件
Name Mark
CHE102 80
MTE100 85
MATH115
.
.
.
.
.
..
我正在使用此代码此方法来提取信息
public void readData(Row row,Sheet ws){
Iterator<Cell> cellIterator = row.cellIterator();
Cell cell=cellIterator.next();
name=cell.getStringCellValue();
cell=cellIterator.next();
mark=cell.getNumericCellValue();
}
在我的主要即时通讯中,使用 for 循环如下:
for(int i=0;i<5;i++){
arr[i]=new Test();
Row row=rowIterator.next();
arr[i].readData(row,ws);
arr[i].setGrade();
arr[i].outputData();
}
但问题是,由于我的 Excel 文件中有许多空单元格,因此出现空点错误 我该如何解决这个问题?
最佳答案
您应该通过显式检查空值来防止空值:
例如你可以写
name= (cell==null) ? "" : cell.getStringCellValue();
但是,cellIterator 仅返回非空白单元格,因此当“名称”为空时,您会得到奇怪的结果。
尝试:
public void readData(Row row,Sheet ws){
Cell cell=row.getCell(0, Row.RETURN_BLANK_AS_NULL);
name= (cell==null) ? "" : cell.getStringCellValue();
cell=row.getCell(1, Row.RETURN_BLANK_AS_NULL);
mark= (cell==null) ? 0 : cell.getNumericCellValue();
}
显式处理两个单元格。当然,您可以使用不同的逻辑,而不是使用空字符串和 0 来表示不存在的单元格。
另请参阅:http://poi.apache.org/spreadsheet/quick-guide.html#Iterator
关于java,apache poi,空点错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21575370/