最近在我的项目中须要实现在web端导入导出的性能,于是就去百度上寻找成熟的技术和文章,试着依据材料去实现本人的业务.于是就发现了阿里写的EasyExcel,它以及其简洁的代码和配置吸引了我.导出的文章在网上一搜一大把,而且也没有如许的简单.我就转载一篇文件https://segmentfault.com/a/1190000019472781我就是依据这篇文章实现的导出性能.导出实现了下一步就导入了,于是我就陷入了两周的bug当中(自己是个小白,我的老师就是搜索引擎)上面上图

这个是我的excel文件,于是我就跟着EasyExcel上的配置一点点的写(至于配置,官网代码曾经写的很具体了,这里就不做介绍了)
这是我的实体类

/** value 列名 index 列程序 */@ExcelProperty( index = 0)private Integer id;/** 员工姓名 */@ExcelProperty( index = 1)private String name;/** 军团 */@ExcelProperty( index = 2)private String corps;/** 部门 */@ExcelProperty(index = 3)private String dept;/** 处分日期 */@ExcelProperty(index = 4)@DateTimeFormat("yyyy-MM-dd")private Date award_time;/** 金额 */@ExcelProperty( index = 5)private Integer bounty;/** 处分起因 */@ExcelProperty( index = 6)private String cause;/** 奖金起源 */@ExcelProperty( index = 7)private String source;/** 凭证号 */@ExcelProperty(index = 8)private String voucher_number;/** 备注 */@ExcelProperty( index = 9)private String remark;

这是我的后端控制器层代码

这是我的前端代码

这是起因

好了,准备就绪,运行,抉择导入文件,导入

满怀期待的报错了

有道翻译过去就是"将数据'序号'转换为整数类型的谬误"于是对着官网文档和本人的excel文件,发现是把我第一行的列名,也给作为值赋给我的实体类对象了,所以才会报这个粗.

增加这段代码的意思就是让它从第3行(从0开始)开始读数据赋值.
好了,测试导入

胜利.
不过在这之前,自己始终有一个问题没有解决,就是如果我没有手动增加get()set()办法就会报这个错

通过debug能够看到值都是null

可是我的excel文件内都是有值的,于是在一位不出名大佬的帮忙下,意识到可能是因为lombok没有动静的生成set()办法,所以对象的属性值全都为null.于是我手动的增加了set办法后就导入胜利了.
然而lombok中的@Data注解其中就有动静生成get()set()的作用啊,这是为什么呢?算了,能实现就行了.当前再钻研吧,而后我就看到了,这个链式加载@Accessors(chain = true)我也没用到啊,那就删了吧.忽然一个想法,会不会是因为这个链式加载的起因呢,于是我就把getset办法全删了,和这个链式加载也删了后一试,嗨呀胜利了~~~可能就是这个链式加载抵触了
总结,用这个easyExcel导入导出还是比拟不便的