Excel导入开发你一定要注意的坑!

Excel导入开发你一定要注意的坑!

前言概述:

Excel导入这里我用的是org.apache.poi这个jar包.需求实际场景简单介绍如下:
用户可以点击新增按钮进行单条数据的配置录入,而导入功能就是上传Excel表格实现了多条数据配置录入
在这里插入图片描述

Excel表格的格式如下:
在这里插入图片描述

比如上图,sheet1表总共有5行数据,第一行是说明,第二行是名称,第三四五行是配置的数据;第三行对应的附加属性在sheet2表,第四行对应的附加属性在sheet3表,即第N行对应的附加属性在sheet(N-1)表,也就是有N行数据就有对应的N张sheet附加表.

debug发现有坑的地方

//拿到第一个sheet表
Sheet sheet = workbook.getSheetAt(0);
//拿到总行数
int ****rowNum = sheet.getLastRowNum() + 1;//这里这么使用其实没有任何问题,坑就出在用户的操作上
按理说,图一的sheet1表总共有5行,这里的rowNum应该是5.实际上也确实如此:
在这里插入图片描述但是!!!假如此时用户只需要导入两行数据了,他把第五行数据删掉,并且也对应地删掉了sheet4表,此时惊奇地发现导入失败了,报空指针异常!
错误的地方出现在这for (int i = 2; i < rowNum; i++) 按理说删除了一行,rowNum 总行数此时应该为4,但是debug发现竟然还是5! 原因是用户的”删除”操作是按了delete,只是该行的数据清除了,而不是把该行整行删掉了,因此空数据的这行出错了并且由于该行还存在(只不过全是空的),但是却没有对应的附加属性sheet表,所以会导致出错.
正确地删除excel该行(是删除该行而不仅仅是”delete”删除数据),记得该行对应的附加属性sheet4表也要删除

Excel表删除记录的正确操作

在这里插入图片描述

思考与改进

那么问题来了,如果用户还是忘了删除整行数据,而仅仅是简单地按了delete清空数据,这要怎么搞?
温和地解释教他,如果用户不接受呢? ~~ 打他!!! ~~
咳咳,初步想法:是否可以做个代码健壮性判断,比如,获取到的Excel当前行如果是空内容,则后续的行就不必要进行读取了,并且当前行由于是空的,也不需要去读取对应的附加属性sheet表了(很可能没有然后报空指针异常)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值