最近在项目中须要实如今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导入导出仍是比较方便的web