导入Excel存在空行,导致NullPointerException_上传excel文件nullpointer_不要忘了为什么出发的博客-程序员秘密

技术标签: 空白行  导入Excel  bug  Bug集锦  

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文件就不会有问题了。

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_27988539/article/details/83065804

智能推荐

电点国际化翻译系统,助力你开启海外项目之旅_roll圈圈的博客-程序员秘密

1、前言项目要走向国外市场,移动端Android和iOS,当然也包括后端和前端,需要进行国际化适配,但是之前的项目中是没有英文翻译文件的,所以需要将项目中所有的中文字符串进行收集交给专业的人士进行翻译,然后将翻译的英文内容分别整理到Android和iOS项目中去。无疑这是一个很繁琐且很容易出错的事情,而且后续在开发的过程中还会新增中文字符串,这个时候我们又需要重新走一遍上面的流程,哪怕只是新增了一个字符串!于是我们需要一个系统去专门处理这件事件,将功能开发和英文翻译这两件事分离开来,让专业的人士去做专业

有关Python的22个编程技巧,请收下!_python 如何对一个变量进行连续操作_Python_1_3的博客-程序员秘密

1. 原地交换两个数字Python 提供了一个直观的在一行代码中赋值与交换(变量值)的方法,请参见下面的示例:x,y= 10,20print(x,y)x,y= y,xprint(x,y)#1 (10, 20)#2 (20, 10)赋值的右侧形成了一个新的元组,左侧立即解析(unpack)那个(未被引用的)元组到变量 <a> 和 <b>...

zabbix5.0版本安装_Portzhu的博客-程序员秘密

zabbix5.0版本安装1:配置环境安装2:安装zabbix5.03:设置中文模式一:准备搭建系统环境centos7.6二:安装过程1:首先查看selinux是否关闭,没有关闭手动关闭# getenforce# vi /etc/selinux/conf //未关闭情况编辑关闭SELINUX=Disabled 修改为Disabled2:查看防火墙是否关闭# systemctl status firewalld# systemctl disable f

onedrive登陆以后是白板,OneDrive不能正常显示与设置_weixin_39958138的博客-程序员秘密

谢谢您的回复,很高兴您的问题看到曙光了。把所有除MS之外的程序都禁用,基本上不会影响系统的稳定性,反而可以排除一些影响系统稳定的第三方应用暂停。另外,您可以试试清除浏览器【已缓存的数据和文件】:【Internet Explorer】《在 Internet Explorer 中查看和删除浏览历史记录》https://support.microsoft.com/zh-cn/help/17438/......

freetype2 中文显示_weixin_34409357的博客-程序员秘密

freetype2 中文显示#include <windows.h>#include <stdio.h>#include <iostream>#include <gl\gl.h>#include "gl\glu.h"#include "glut.h"#include <ft2...

api-ms-win-crt-private-l1-1-0.dll文件找不到解决方法_amio555的博客-程序员秘密

或者将文件复制到Windows系统目录,这个需要注意电脑的系统是32位还是64位,如果是32位的系统,那就将本站下载32位的dll文件放到“C:/Windows/System32”这个文件夹里面,如果是64位的系统,那就将本站下载的32位dll文件放到“C:/Windows/SysWOW64”这个文件夹里面,本站下载的64位文件放到“C:/Windows/System32”这个文件夹里面.2,待修复的注册表。1、从下面列表下载api-ms-win-crt-private-l1-1-0.dll文件。

随便推点

学习Spark--(6)--高阶函数_spark高阶函数_七个馒头的博客-程序员秘密

Scala高级特性1. 高阶函数--1--概念Scala混合了面向对象和函数式的特性,我们通常将可以作为参数传递到方法中的表达式叫做函数。在函数式编程语言中,函数是“头等公民”,把函数作为参数或者是返回值是函数叫高阶函数。高阶函数包含:作为值的函数、匿名函数、闭包、柯里化等等。--2-- 作为值的函数可以像任何其他数据类型一样被传递和操作的函数,每当你想要给算法传入具体动作...

深度学习系列(六):自编码网络的特征学习_on2way的博客-程序员秘密

在第三节我们已经介绍了 简单网络的自编码学习 知道了自编码学习其实就是学习到了输入数据的隐含特征,通过新的特征来表征原始数据,本节将介绍如何使用这些隐含特征进行模式分类; 还是以前面的三层自编码网络: 抽象一下如下: 其中学习到的权值系数W1与W1’是不一样的,我们把W1叫做编码权值,W1’叫做译码权值,原始数据在编码权值下的新数据Y就可以视为学习到了新维度下的数据,这在第三节也说

Ctrl+C可以复制,但是Ctrl+V不能粘贴_ctrl+c可以复制,但是ctrl+v不能粘贴__weixin_42402402的博客-程序员秘密

前两天装了Mathtype,最近才发现Ctrl+v不能复制了,原因是Mathtype插件中快捷键和这个冲突了,可以参考以下网址修改设置,就好了。link

ARM指令集中的移位操作_arm左移指令_qimi123456的博客-程序员秘密

ARM指令集中的移位操作ARM 微处理器内嵌的桶型移位器(Barrel Shifter),支持数据的各种移位操作,移位操作在 ARM 指令集中不作为单独的指令使用,它只能作为指令格式中是一个字段,在汇编语言中表示为指令中的选项。例如,数据处理指令的第二个操作数为寄存器时,就可以加入移位操作选项对它进行各种移位操作。移位操作包括如下6 种类型, ASL 和 LSL 是等价的,可以

判断一个坐标点是否在一个无规则的多边形内 (iOS定位服务与地图应用开发:高德地图开发)_高德 判断经纬度是否在 不规则多边形_MOKA的博客-程序员秘密

m目录[-]1 定位服务判断一个坐标点是否在一个无规则的多边形内2 系统地图设置地图区域平移地图,上下左右判断某一个坐标点是否在当前地图区域内在地图上添加标注在地图上绘制线条和多边形由于博客迁移至www.coderyi.com,文章请看http://www.coderyi.com/archives/419之前工作在一家智能设备的公司,做过一个亲友定位

推荐文章

热门文章

相关标签