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模式,在上层做了模型转换的封装,让使用者更加简单方便。

EasyExcel是一款基于Java的开源Excel操作工具,它提供了简单易用的API,可以方便地进行Excel文件的读取和写入操作。下面是使用EasyExcel导入数据的步骤: 1. 引入EasyExcel依赖:在你的Java项目中,需要引入EasyExcel的相关依赖。你可以在Maven或Gradle配置文件中添加以下依赖: ```xml <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.10</version> </dependency> ``` 2. 创建实体类:根据Excel文件的结构,创建一个与之对应的Java实体类,用于存储导入的数据。 3. 编写导入代码:使用EasyExcel提供的API,编写导入数据的代码。以下是一个简单的示例: ```java String fileName = "path/to/excel/file.xlsx"; // Excel文件路径 // 定义导入的监听器 AnalysisEventListener<YourEntityClass> listener = new AnalysisEventListener<YourEntityClass>() { @Override public void invoke(YourEntityClass data, AnalysisContext context) { // 处理每一行数据的逻辑,可以将数据保存到数据库等操作 // data为解析出的一行数据,YourEntityClass为你定义的实体类 } @Override public void doAfterAllAnalysed(AnalysisContext context) { // 所有数据解析完成后的逻辑 } }; // 执行导入操作 EasyExcel.read(fileName, YourEntityClass.class, listener).sheet().doRead(); ``` 在上述代码中,你需要将`YourEntityClass`替换为你自己定义的实体类名,`fileName`替换为你要导入的Excel文件路径。 4. 执行导入:运行上述代码,即可实现Excel数据的导入操作。EasyExcel会自动解析Excel文件,并将每一行数据传递给监听器中的`invoke`方法进行处理。 以上就是使用EasyExcel导入数据的基本步骤。如果你还有其他问题,请继续提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值