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

1.引入依赖

<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.2.1</version>
</dependency>

2.后端代码

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

 /**
     * 文件下载(失败了会返回一个有部分数据的Excel)
     * <p>
     * 1. 创建excel对应的实体对象 参照{@link DownloadData}
     * <p>
     * 2. 设置返回的 参数
     * <p>
     * 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模式,在上层做了模型转换的封装,让使用者更加简单方便。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值