我已经写了下面提到的用于读取excel文件的代码片段,这对于非空的excel文件工作正常,但对于excel文件,它正在抛出 NULLPOINTEREXCEPTION 。
ArrayList<String> dataList = new ArrayList<String>();
XSSFSheet xssfSheet = xssfWorkbook.getSheetAt(0);
int rowNum = xssfSheet.getLastRowNum() + 1;
int startRow = 0, startCol = 0, colNum;
for (int r = startRow; r < rowNum; r++) {
XSSFRow row = xssfSheet.getRow(r);
colNum = xssfSheet.getRow(r).getLastCellNum();
String data = "";
for (int c = startCol; c < colNum; c++) {
XSSFCell cell = row.getCell(c,XSSFRow.CREATE_NULL_AS_BLANK);
data += cell.toString() + ", ";
}
dataList.add(data);
}
closeFile();
我在此行中为空文件获取异常: colNum = xssfSheet.getRow(r).getLastCellNum(); 问题是 getLastCellNum() 返回值为0表示没有记录,也表示没有记录。因此,在检索getLastCellNum()时,我得到空指针异常。
答案 0 :(得分:0)
您应该使用rowIterator()和cellIterator()迭代行和列。
XSSFRow row;
XSSFCell cell;
Iterator rows = sheet.rowIterator();
while (rows.hasNext()){
row=(XSSFRow) rows.next();
Iterator cells = row.cellIterator();
while (cells.hasNext())
{
cell=(XSSFCell) cells.next();
cIndex=cell.getColumnIndex();
data += cell.toString() + ", ";
}
dataList.add(data);
}