关于前端:使用EasyExcel实现web的导入和导出

93次阅读

共计 1424 个字符,预计需要花费 4 分钟才能阅读完成。

最近在我的项目中须要实现在 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 导入导出还是比拟不便的

正文完
 0