前后端分离,springboot结合easyExcel实现导出excel

首先说一下,我的需求是前端点击导出,后端直接把所有的订单数据导出到excel中,并且通过流的形式返回到前端。

下面就开始。

  1. 既然要用easyExcel,那么就先引入pom依赖,
<dependency>
   <groupId>com.alibaba</groupId>
   <artifactId>easyexcel</artifactId>
   <version>2.2.6</version>
</dependency>
  1. 创建一个要导出的字段模板类,这里@ExcelProperty是excel中的列名称,@ColumnWidth是列宽
@Data
public class OrderModel {
    @ColumnWidth(18)
    @ExcelProperty("提交时间")
    private String createTime;
    @ColumnWidth(50)
    @ExcelProperty("收件人信息")
    private String recipientsInfo;
    @ColumnWidth(50)
    @ExcelProperty("人员类别")
    private String personTypeInfo;
    @ColumnWidth(50)
    @ExcelProperty("备注")
    private String remark;

}
  1. 直接查数据然后导出,写一个控制层接口
    注意,URLEncoder类导入java.net.URLEncoder,这个包;至于返回的数据可以根据业务来定义,这里就写void
 @GetMapping("/excel")
 public void excel(HttpServletResponse response) {
    //这里代码去掉了,就是获取要导出的数据集合	orderModelList
    
    OutputStream os = null;// 取得输出流
    try {
        os = response.getOutputStream();
        response.setHeader("content-disposition", "attachment;fileName="+ URLEncoder.encode("订单信息"+ System.currentTimeMillis() + ".xlsx","UTF-8") );// 设定输出文件头,这里fileName=后面跟的就是文件的名称,可以随意更改
    } catch (IOException e) {
        e.printStackTrace();
    }
    EasyExcel.write(os, OrderModel.class).sheet("订单数据").doWrite(orderModelList);//sheet()里面的内容是工作簿的名称
    response.reset();// 清空输出流
}

搞定,其他的一些东西可以去官网

2021.01.16
  • 突然想到之前做了一个该功能的一个拓展,具体要求是前端选择要导出的数据,我首先想到的就是用post接收前端选中的数据,然后再用流返回给前端。但是试了很久一直报错,很来百度好像是因为post请求的原因导致不能这样写,然后就投机取巧让前端在地址栏把要导出的数据给我携带过来(因为系统并不是很大,数据也不是很多,一页只展示10条,然后就最多只能选十条,就不必担心get请求过长的问题)。
  • 当然这样做可能要截取,很麻烦,所以就把要导出的id整一个json串拼在参数后面如:
http://192.168.16.9:8021/jasoboss/crm/business/export?adminId=139&boIdJson=%5B1%5D

这里的boIdJson就是我后台要接受的id集合,后面是一个json格式然后通过encodeURI转码后的结果如下图:
在这里插入图片描述转码地址:https://www.sojson.com/encodeurl.html

  • 后台接收直接转集合就行
List<Long> clueIdList = JSONArray.parseArray(clueIdJson, Long.class)

解决!!!
可能很基础,也可能解决的方法不对,但是刚入行的我也算一次提升吧,如果有什么地方错了还麻烦大神帮忙指正,提前感谢,加油!!!

  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
使用EasyExcel导出Excel非常简单,只需要几个步骤即可: 1. 引入EasyExcel依赖 在`pom.xml`文件中加入EasyExcel的依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> </dependency> ``` 2. 编写导出Excel的实体类 例如,我们要导出一个学生的信息表格,可以先定义一个`Student`实体类: ```java @Data public class Student { @ExcelProperty("姓名") private String name; @ExcelProperty("班级") private String clazz; @ExcelProperty("分数") private Integer score; } ``` `@ExcelProperty`注解用于指定导出Excel时的列名。 3. 编写导出Excel的方法 在Controller中编写导出Excel的方法: ```java @GetMapping("/export") public void export(HttpServletResponse response) throws IOException { // 查询出所有学生信息 List<Student> students = studentService.list(); // 设置响应头 response.setContentType("application/vnd.ms-excel"); response.setCharacterEncoding("utf-8"); String fileName = URLEncoder.encode("学生信息表.xlsx", "UTF-8"); response.setHeader("Content-disposition", "attachment;filename=" + fileName); // 使用EasyExcel进行导出 EasyExcel.write(response.getOutputStream(), Student.class).sheet("学生信息").doWrite(students); } ``` 其中,`EasyExcel.write()`方法用于指定导出Excel文件的输出流和实体类类型,`sheet()`方法用于指定Excel文件的sheet名称,`doWrite()`方法用于执行导出操作。 4. 测试 启动应用程序,访问`/export`接口,即可下载导出Excel文件。 以上就是使用EasyExcel导出Excel的简单示例。需要注意的是,EasyExcel还支持导入Excel和大数据导入导出等功能,具体使用方法可参考官方文档。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值