阿里EasyExcel,可用在SSM框架

北京皮肤病医治医院 https://m-mip.39.net/disease/mip_9525899.html

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

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

这是当时的导出功能界面

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

对应的html页面

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

html部分

只有一句

el-button

click=onExport导出/el-button

这里是用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文件里的内容。

!--查询所有病人情况--selectid=queryAllPatientCaseresultType=WmpPatientCaseEntityselect*fromwmp_patient_case/select

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

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

里面有两点很关键!

第一:实体类要继承BaseRowModel

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

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

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

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

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

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

/***从BaseRowModel排除数据库映射,用于导出设置*/

TableField(exist=false)privatefinalMapInteger,CellStylecellStyleMap=newHashMap();

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

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

ExcelUtil.writeExcel(response,list,fileName,sheetName,newWmpPatientCaseEntity());

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

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




转载请注明:http://www.aierlanlan.com/rzdk/5501.html