1.情景再现:
通过导入Excel文件,导入数据,把这个Excel中的数据处理成一个List,以方便进一步处理,每行数据对应一个List中的元素。但是在处理这个List的时候,报了NullPointerException。
2.排查过程:
下图为该Excel文件的截图,同过ctrl + end,定位到最后Excel文件使用的最后一个单元格,发现其实第三行是一个空行,只是没有数据,但是这一行是存在的,只是肉眼看不出来。所以,我以为我上传的Excel文件只有两行,其实是有三行,存在一个空行。
下图为debug模式调试结果,
导入的Excel在解析之后size=3,说明该Excel文件确实是有三行。
正是由于这个空行的存在,被解析之后,就存在一个为空的map,于是之后的处理中就报出了NullPointerException。
3.原因分析:
导致Excel数据为空的行存在的原因是我使用了delete键来删除单元格中的数据。按delete键删除选中的单元格中的数据,只会将单元格中的数据删除,但是单元格仍然存在。
而采用下图中的方式,则会删除单元格:
使用上图中的删除方式,就不会存在空白行了。
4.bug修复:
遍历一遍List,将其中为空的map删掉就可以了,之后用户再上传有空白行的Excel文件就不会有问题了。