我们使用easypoi导入数据时,可能会忽略这一点,只注意到了使用标题所占行数,以及表头所占行数,很容易忽略到这个问题,这个问题也是测试给我反馈来的问题,一开始我也没意识到,阿西吧,查阅了好多资料都没有找到问题所在!
我们通常导入导出模板会自定义一个序号列,非实体字段,通常在列首,如下图:
当我在序号列不写内容时,此列的数据就会被自动忽略,如果excel表中,所有序号列都没有内容时,就只会读取导入第一行数据。
因为在读取excel表中数据前我们设置了以下内容:
MultipartFile file = entity.getValue();// 获取上传文件对象
ImportParams params = new ImportParams();
/*表格标题所占行数*/
params.setTitleRows(2);
/*表头所占据的行数行数,默认1,代表标题占据一行*/
params.setHeadRows(1);
params.setNeedSave(true);
但是默认主键就会变成 序号列 ,录入数据时没有写序号列,没有内容,主键都没有内容怎么可能被读取进去呢。
所以我们在读取前在设置一下主键就可以完美解决了!
ImportParams params = new ImportParams();
/*表格标题所占行数*/
params.setTitleRows(2);
/*表头所占据的行数行数,默认1,代表标题占据一行*/
params.setHeadRows(1);
/*导入excel 把第二列设为主键 否则主键为空会判定为无效数据不导入*/
params.setKeyIndex(1);
params.setNeedSave(true);
默认 params.setKeyIndex(0); 所指的0就是下标,我们的序号列,所以主键改成我们实体的必填字段就可以了,完美解决!
文章中若有问题还烦请大家指出~么么么么么么么
.