一键导出,优雅的完成你的excel数据!

点击上方“终端研发部”,选择星标

回复“资源”,领取全网最火的Java核心知识总结~

前言

这两天都没有更,周六忙了一天,周日小喵去海洋公园玩了,可有意思了!

今天boss让小喵做一个导出功能,小喵前几天自己用CSDN某博主写的《使用java在后台将数据导出为excel文件》实现了一个导出功能。

这是当时的导出功能界面

一键导出,优雅的完成你的excel数据!_第1张图片

这是今天小喵使用阿里EasyExcel之后的

一键导出,优雅的完成你的excel数据!_第2张图片

对应的html页面

一键导出,优雅的完成你的excel数据!_第3张图片

公司用的就是阿里EasyExcel,所以小喵就现学现用了,看了下写法感觉是超简单的。

html部分

只有一句

导出

这里是用vue的el组件写的,其实换成其他的也行,主要是调用onExport方法就可以了。

js部分

一键导出,优雅的完成你的excel数据!_第4张图片

从response开始介绍吧,前面的是axios以post方式请求后台数据,那个data可以随意填,这里是没有要求的,responseType是arraybuffer。

blob对象的官方介绍:

一个 Blob对象表示一个不可变的, 原始数据的类似文件对象。Blob表示的数据不一定是一个JavaScript原生格式 blob对象本质上是js中的一个对象,里面可以储存大量的二进制编码格式的数据。

其实说白了就是Blob可以实现文件下载功能,将文本或者JS字符串信息,借助Blob转换成二进制。然后,作为 a 标签的 href 属性,配合download属性,实现下载功能。但是,如果文件太大,就会出现下载失败的问题。

java部分

一键导出,优雅的完成你的excel数据!_第5张图片

嗯,这里的几行是以很好理解的。第一行是post方式接受axios发送来的请求。然后就开始我们的导出功能了。

我写的wmpPatientCaseService是一个服务类,里面有个功能是查询所有信息。那是在dao里写的queryAllPatientCase()。

嗯,还是把Dao层的给大家看看呗,这是WmpPatientCaseDao.xml文件里的内容。

就是写好这个后,去接口定义一下,再去服务类注册一下,这个方法就可以拿来用了。

返回的数据是一个实体的List,实体类就是我存的数据。

里面有两点很关键!

一键导出,优雅的完成你的excel数据!_第6张图片

第一:实体类要继承 BaseRowModel

第二:实体类的成员变量前要加

@ExcelProperty(value=”xxx”,index=xxx)

这个注解的作用是:value 属性指定字段名,index属性指定字段排序。

我一开始忘记加这个找了调试了半天没发现原因, 后来发现缺少表头,一步一步就查到了是这出现问题。

博客园有个博主有篇《阿里 EasyExcel 使用及避坑》讲的蛮细节的。

第三:在实体类加上这么一段

/*** 从BaseRowModel排除数据库映射,用于导出设置 */
@TableField(exist=false)
private final Map cellStyleMap = new HashMap();

这一段的作用是,因为数据库读实体类有映射关系的,反正他被映射进去了。

实体类的三点注意后,直接调用

ExcelUtil.writeExcel(response, list, fileName, sheetName, new WmpPatientCaseEntity());

这一行就OK了,也就是上面java的最后一行。

这个EasyExcel用起来还是蛮轻松的哟,java里就几行代码,小喵真心希望大家都能学会啦,能自己进步的同时帮到他人是很有趣的事情啦

阅读更多

十年程序员血与泪:千万别重构代码!

安居客 Android APP 走向平台化

Nginx 之父被捕?!原因竟然是上班做私活?

离职10天,面挂4家公司!

谷歌强推 AndroidX ,你还在应Support?

IntelliJ IDEA 2019.3最新注册码, 免费激活到死!

相信自己,没有做不到的,只有想不到的

在这里获得的不仅仅是技术!

喜欢就给个“在看

你可能感兴趣的:(一键导出,优雅的完成你的excel数据!)