欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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

程序员文章站 2021-12-23 21:07:30
...
首先说一下,我的需求是前端点击导出,后端直接把所有的订单数据导出到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();// 清空输出流
}

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