这两天用HSSFWORKBOOK处理对数据库中数据与exce相互导入导出时,发现对于数据库中Date类型的处理还是有点麻烦的,我在这个过程从刚开始有问题到现在可以良好实现,总结了自己的解决方案,分享给各位遇到同样问题的同学,有不足之处,欢迎拍砖。
现在我有一个实体类Company(公司)
大家看到,此相关数据库设计时,入库时间,修改时间,备注是null,其余字段均为not null ,这也是产生我之后遇到问题的原因,后面会给大家讲到。
我们看到入库时间,修改时间都是Date类型,Date类型一般都是很恶心的,大家懂。
刚刚提到,入库时间,修改时间,备注都是null的,那么意味着用户在处理这些字段的输入时,可以输入,也可以不输入。如果输入的话,就没什么问题了,相反,如果不输入,问题就出现了,当把excel文件导入数据库时,就可能会报NullPointException异常。如下图为业务需求操作界面:
相关代码:
一、初始解决方案:
将excel中输入的时间看为String类型
1.importFile类:
// 入库时间
if(!StringUtil.isNullOrEmpty(row.getCell(6))){
row.getCell(6).setCellType(Cell.CELL_TYPE_STRING);
company.setCreateTime(sdf.parse(row.getCell(6).getStringCellValue().trim()));
}
//修改时间
if(!StringUtil.isNullOrEmpty(row.getCell(7))){
row.getCell(7).setCellType(Cell.CELL_TYPE_STRING);