点击上方“终端研发部”,选择“星标”
回复“资源”,领取全网最火的Java核心知识总结~
前言
这两天都没有更,周六忙了一天,周日小喵去海洋公园玩了,可有意思了!
今天boss让小喵做一个导出功能,小喵前几天自己用CSDN某博主写的《使用java在后台将数据导出为excel文件》实现了一个导出功能。
这是当时的导出功能界面
这是今天小喵使用阿里EasyExcel之后的
对应的html页面
公司用的就是阿里EasyExcel,所以小喵就现学现用了,看了下写法感觉是超简单的。
html部分
只有一句
导出
这里是用vue的el组件写的,其实换成其他的也行,主要是调用onExport方法就可以了。
js部分
从response开始介绍吧,前面的是axios以post方式请求后台数据,那个data可以随意填,这里是没有要求的,responseType是arraybuffer。
blob对象的官方介绍:
一个 Blob对象表示一个不可变的, 原始数据的类似文件对象。Blob表示的数据不一定是一个JavaScript原生格式 blob对象本质上是js中的一个对象,里面可以储存大量的二进制编码格式的数据。
其实说白了就是Blob可以实现文件下载功能,将文本或者JS字符串信息,借助Blob转换成二进制。然后,作为 a 标签的 href 属性,配合download属性,实现下载功能。但是,如果文件太大,就会出现下载失败的问题。
java部分
嗯,这里的几行是以很好理解的。第一行是post方式接受axios发送来的请求。然后就开始我们的导出功能了。
我写的wmpPatientCaseService是一个服务类,里面有个功能是查询所有信息。那是在dao里写的queryAllPatientCase()。
嗯,还是把Dao层的给大家看看呗,这是WmpPatientCaseDao.xml文件里的内容。
就是写好这个后,去接口定义一下,再去服务类注册一下,这个方法就可以拿来用了。
返回的数据是一个实体的List,实体类就是我存的数据。
第一:实体类要继承 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最新注册码, 免费激活到死!
在这里获得的不仅仅是技术!
喜欢就给个“在看”