最简单的SpringBoot+easyExcel+Vue使用的详细流程(已封装工具类即拿即用)
最简单的在sprboot中使用easyExcel使用的详细流程(已封装工具类即拿即用)搭建环境导入easyExcel所需依赖<!--easyexcel报表导出--><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><ve
·
搭建环境
导入easyExcel所需依赖
<!--easyexcel报表导出 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.0.0</version>
</dependency>
创建一个工具类
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.ExcelWriter;
import com.alibaba.excel.write.metadata.WriteSheet;
import java.io.*;
import java.net.URLEncoder;
import java.util.List;
import javax.servlet.ServletOutputStream;
import javax.servlet.http.HttpServletResponse;
import org.apache.poi.ss.formula.functions.T;
/**
* <p>Title: To.java</p>
* <p>Description:添加注释 </p>
* @author youthMing
* @date 2020年4月23日
*/
public class EasyExcelUtil {
//报表导出处理
@SuppressWarnings({ "rawtypes", "unchecked" })
public static void toExcle(HttpServletResponse response,List listdata,String filename,Class clazz) {
try {
response.setContentType("application/vnd.ms-excel");
response.setCharacterEncoding("utf-8");
String name = URLEncoder.encode(filename, "UTF-8");
response.setHeader("Content-Disposition", "attachment;filename*=UTF-8''"+name+".xlsx");
//获取输出流
ServletOutputStream outputStream= response.getOutputStream();
//获取工作簿对象
ExcelWriter excelWriter = EasyExcel.write(outputStream, clazz).build();
//获取工作表数量
Integer sheetnum=1;
//集合大小
int size = listdata.size();
//这里控制每个工作簿一百万条数据
if ( size <1000000) {
sheetnum=1;
}else {
sheetnum= size %1000000==0 ? size /1000000 : size /1000000+1;
}
// 去调用写入,这里我调用了sheetnum次,实际使用时根据数据库分页的总的页数来。这里最终会写到sheetnum个sheet里面
List<T> subList =null;
for (int i = 0; i < sheetnum; i++) {
// 每次都要创建writeSheet 这里注意必须指定sheetNo
WriteSheet writeSheet = EasyExcel.writerSheet(i,filename+i).build();
// 分页去数据库查询数据 这里可以去数据库查询每一页的数据
subList = listdata.subList(i*1000000,i==sheetnum-1 ? size : (i+1)*1000000);
excelWriter.write(subList, writeSheet);
}
//finish 会帮忙关闭流
excelWriter.finish();
} catch (IOException e) {
e.printStackTrace();
}
}
}
我们将这个工具类放在项目的指定文件夹内就可以直接调用,就可以在任何需要报表导出的地方进行报表导出;
工具类的使用
ToExcelUtil.toExcle(response, castEntity, usageAntibioticsForm.getExport(), GetDrugUserOfTopNVo.class);
注意事项
1、实体类需要加相应easyExcel注解(如果不加注解也可以只不过表头名字会和字段怎么相同)
注解还有很多例如多表头出来,行高度,列宽度等可以在easyExcel官方文档中根据自己的需要自行添加。
2、相应Controller返回值需要返回空
在相应的方法中最后响应给页面的返回值需要为空,不然代码会报错!
前端(Vue)写法
//这一段可以直接复制这里是使用form表单提交请求:
//使用form导出数据
post:function(url, params) {
// 创建form元素
var temp_form = document.createElement("form");
// 设置form属性
temp_form .action = url;
temp_form .target = "_self";
temp_form .method = "post";
temp_form .style.display = "none";
// 处理需要传递的参数
for (var x in params) {
var opt = document.createElement("textarea");
opt.name = x;
opt.value = params[x];
temp_form .appendChild(opt);
}
document.body.appendChild(temp_form);
// 提交表单
temp_form .submit();
},
//这里调用上面的方法进行导出:
//导出Excel
export:function(){
this.identityVerifyForm2.export = '未核实案件';
var url= this.ExportAPI + '/FaceInpregister/GetFaceInpregisterListExport';
this.post(url,this.identityVerifyForm2);
},
第一次发布文章感谢支持!
更多推荐
已为社区贡献1条内容
所有评论(0)