EasyExcel如何导出数据?超级简单,看这就够了

1.引入依赖


    com.alibaba
    easyexcel
    3.2.1

2.后端代码

我们可以在官网找到相关代码

 /**
     * 文件下载(失败了会返回一个有部分数据的Excel)
     * 

* 1. 创建excel对应的实体对象 参照{@link DownloadData} *

* 2. 设置返回的 参数 *

* 3. 直接写,这里注意,finish的时候会自动关闭OutputStream,当然你外面再关闭流问题不大 */ @GetMapping("/export") public void download(HttpServletResponse response) throws IOException { // 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"); response.setCharacterEncoding("utf-8"); // 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系 //"测试":就是我们要生成文档的名称,可以改为自己的 String fileName = URLEncoder.encode("测试", "UTF-8").replaceAll("\\+", "%20"); response.setHeader("Content-disposition", "attachment;filename*=utf-8''" + fileName + ".xlsx"); /** * DownloadData.class:导出数据类型 * .doWrite(data):导出数据来源,比如RecordService.getTodayRecord(),可以从我们自己 *写的方法中获取 * .sheet():文件内标题,可以换成自己的 */ EasyExcel.write(response.getOutputStream(), DownloadData.class).sheet("模板").doWrite(data()); }

3.前端调用

前端我们直接调用这个方法就行

methods:{
    exportRecord(){
      //相当于超链接,填写后端地址,_blank表示在新窗口打开
    
      window.open("/system/record/export","_blank");
    }}

4.导出表格内字段名是英文怎么解决

其实很简单,只需要在我们实体类上加上

@ExcelProperty注解就行了,
@ExcelIgnore注解用于忽略字段,我们不需要生成的字段就可以添加该注解

用法如下所示




@TableName("pay_record")
@Data
@AllArgsConstructor
@NoArgsConstructor
public class Record implements Serializable {

    private static final long serialVersionUID = 1L;

    /**
     * 交易记录表
     */
    @ExcelProperty("id")
    @TableId(value = "id", type = IdType.AUTO)
    private Integer id;
    /**
     * 交易类型
     */
    @ExcelIgnore
    private Integer type;


    /**
     * 交易类型内容
     */
    @ExcelProperty("交易类型")
    private String typeContent;

    /**
     * 日期
     */
    @ExcelProperty("创建时间")
    private String date;

    /**
     * 交易编号
     */
    @ExcelProperty("订单编号")
    private String out_trade_no;

    /**
     * 公司名称
     */
    @ExcelIgnore
    private String ename;

    /**
     * 交易金额(分)
     */
    @ExcelProperty("交易金额(分)")
    private int price;

    /**
     * 交易客户手机号
     */
    @ExcelProperty("交易客户手机号")
    private String phone;

    /**
     * 交易状态(交易失败  交易成功)
     */
    @ExcelIgnore
    private String state;

    @ExcelIgnore
    private Integer category;
    @ExcelIgnore
    private Integer aid;
    @ExcelIgnore
    private long timestamp;
    @ExcelIgnore
    private String appid;
    @ExcelIgnore
    private String partnerid;
    @ExcelIgnore
    private String noncestr;
    @ExcelIgnore
    private String sign;

 
}

5.总结

easyExcel是一个非常简单好用的数据导出导入工具,easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便。

你可能感兴趣的:(java)