关于excel中导入存在空行情况的说明

时间:2024-03-19 08:19:03

有的系统需要一些类似于报表的东西,会使用POI进行导入导出,今天的主题在于导入的一个环节。

利用POI导入,我的个人理解过程是:

1.先要解析得到的excel。

2.利用IO流进行读取数据,利用IO流得到HSSFWorkbook,得到sheet,得到所有行数,所有列数

关于excel中导入存在空行情况的说明

3.读取数据,当我们已经得到所有行数,并且可以得到每行的列数,这里就存在今天要说的问题:

当我们的excel中有一些空行,他和其他的空行没有什么两样,但是POI在解析的时候不这么认为,

关于excel中导入存在空行情况的说明

这是因为我们在录入excel时有两种删除行的方式,比如:我可以右键--删除,也可以选中一行,按delete键删除。区别就在这里,POI会认为我们delete的行这行是null,但是存在,而另外一种方式POI是认为是不存在的。

这就需要我们在代码里对于这种情况进行判断,并且剔除掉杂牌,这对于我们大批量的导入的效率也会有帮助,主要是,这样避免了将null放进数据库中

本人的解决方案如下:

关于excel中导入存在空行情况的说明

利用POI的迭代器,将null的行和正常的数据行每一个单元格都去进行判断,对于每一个单元格进行getCellType和空进行判断,如果,这个行存在,但是它每个单元格都是空,那么我就认为他是一个混子,就不在对它进行后续的操作。

4.以上就是本人的解决方案,当然根据实际情况会有不同的应对方法。看到网上基本有两种解决方案

第一种就是和我一样,在读取数据就将这种混子进行剔除。

第二种是读取所有可以读取的行,然后再插入数据库之前进行一次校验,剔除这种Null行。

个人认为二者仅仅实现方式不一样,但都实现了对Null行的去除。

5.当我们读取有意义的行,下一步就是获取我们每个单元格的数据格式,分别做相应的处理。

另外附上CellType:

CellType 类型 值
CELL_TYPE_NUMERIC 数值型 0
CELL_TYPE_STRING 字符串型 1
CELL_TYPE_FORMULA 公式型 2
CELL_TYPE_BLANK 空值 3
CELL_TYPE_BOOLEAN 布尔型 4
CELL_TYPE_ERROR 错误 5