POI读EXCEL报java.lang.NullPointerException
public ArrayList FormExcel(String fileToBeRead) {
ArrayList list = new ArrayList();
try {
HSSFWorkbook workbook = new HSSFWorkbook(new FileInputStream(
fileToBeRead));
HSSFSheet sheet = workbook.getSheetAt(0);
// 获得SHEET表的行数
int num = sheet.getLastRowNum();
System.out.println(num);
System.out.println(sheet.getLastRowNum());
System.out.println(sheet.getFirstRowNum());
// Date类型数据转换为String
SimpleDateFormat formatDate = new SimpleDateFormat("yyyy-MM-dd");
for (int i = 1; i <= num; i++) {
QQ qq = new QQ();
HSSFRow row = sheet.getRow(i);
HSSFCell cell1 = row.getCell((short) 0);
HSSFCell cell2 = row.getCell((short) 1);
HSSFCell cell3 = row.getCell((short) 2);
HSSFCell cell4 = row.getCell((short) 3);
// 注意EXCEL表单是空白(只考虑字符,日期类型)的情况.要判断为空则要有默认类型数据代替.否则读不出后面的数据
qq.setQq(cell1.getNumericCellValue());
if (cell2.getCellType() == HSSFCell.CELL_TYPE_STRING) {
if (cell2 != null
&& !(cell2.getCellType() == HSSFCell.CELL_TYPE_BLANK)) {
qq.setName(cell2.getRichStringCellValue().toString());
}
} else {
qq.setName("");
//cell2=row.createCell((short) 1);
//cell2.setCellType(HSSFCell.CELL_TYPE_STRING);
// cell2.setCellValue("");
//qq.setName(cell2.getRichStringCellValue().toString());
}
System.out.print(cell1.getNumericCellValue());
System.out.print(cell2.getRichStringCellValue());
System.out.print(cell3.getNumericCellValue());
System.out.println(cell4.getDateCellValue());
qq.setScale(cell3.getNumericCellValue());
if (!(cell4.getCellType() == HSSFCell.CELL_TYPE_BLANK)) {
Date d = cell4.getDateCellValue();
String date1 = formatDate.format(d);
qq.setDate1(date1);
} else {
qq.setDate1(null);
}
list.add(qq);
}
} catch (Exception e) {
System.out.println("读取EXCLE记录有错 : " + e);
// 读取EXCEL数据出异常就设置LIST为NULL
list = null;
}
return list;
}
上面是我写的一个读取EXCEL表中的数据先一条条的封装到一个JAVABEAN中.在把这个BEAN加到ArrayList中去..现在问题就当读取EXCEL CELL是空白字符类型就会报:读取EXCLE记录有错 : java.lang.NullPointerException
感觉有些奇怪..那位大虾帮帮小弟看看.小弟在此先谢谢了.