POI在写excel时,实体类member有字段数值为空,如member.getUpdateTime()
、member.getNickname()
、member.getScore()
等,发现:
1、如果字段是Date
类型且数值为空时,会报空指针异常,如member.getUpdateTime()
字段
2、如果字段是Integer
等包装类以及String
等引用类型且数值为空时,会报空指针异常。因为它们的默认值都为NULL
3、如果字段是int等基本数据类型写入无问题,如member.getScore()
字段。因为它们的默认值都为0
for (Member member : memberList) {
Row row = memberSheet.createRow(1);
row.createCell(0).setCellValue(member.getId());
row.createCell(1).setCellValue(member.getCardCode());
row.createCell(2).setCellValue(member.getNickname());
row.createCell(3).setCellValue(member.getCity());
row.createCell(4).setCellValue(member.getCountry());
row.createCell(5).setCellValue(member.getScore());
row.createCell(6).setCellValue(member.getMobile());
row.createCell(7).setCellValue(member.getRealname());
row.createCell(8).setCellValue(member.getSex());
row.createCell(9).setCellValue(new SimpleDateFormat("yyyy-MM-dd").format(member.getBirthday()));
row.createCell(10).setCellValue(member.getCreateTime());
row.createCell(11).setCellValue(StringUtils.isEmpty(member.getUpdateTime()) ? "" : ""+member.getUpdateTime()+"");
row.createCell(12).setCellValue(HelpApp.date2Str(member.getTimestamp()));
}
注:写入excel时,Date类型字段需要转换一下,excel中才可显示时间,否则显示一串数字,转换如member.getBirthday()