使用EasyExcel包读取excel文件

导入EasyExcel包

// gradle导入
implementation "com.alibaba:easyexcel:3.1.3"
// maven导入
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.1.3</version>
</dependency>

Excel导入模板

在这里插入图片描述

实体类

/**
 * @author developer_cw
 * @date 2022-11-28
 */
@Data
public class EasyExcelEntity implements Serializable {

    /**
     * ExcelProperty注解 index参数是指第几列,0为第一列,1为第二列
     */
    @ExcelProperty(index = 0)
    @ApiModelProperty(value = "名称")
    private String name;

    @ExcelProperty(index = 1)
    @ApiModelProperty(value = "地址")
    private String address;
}

控制器

/**
 * @author developer_cw
 * @date 2022-11-28
 */
@PostMapping("/readExcel")
@ApiOperation(value = "excel读取")
public void readExcel(@RequestPart("file") MultipartFile file) throws IOException {
    easyExcelService.readExcel(file);
}

服务层

void readExcel(MultipartFile file) throws IOException;

服务实现层

	@Override
    public void readExcel(MultipartFile file) throws IOException {
        EasyExcelListener<EasyExcelEntity> listener = new EasyExcelListener<>();
        ExcelReader excelReader = EasyExcelFactory.read(
                file.getInputStream(),
                EasyExcelEntity.class, listener)
                // 0 没有标题行,读取时不会跳过
                // 1 有一行标题,读取时会跳过第一行
                // 2 有两行标题,读取时会跳过前两行
                .headRowNumber(1)
                .build();
        excelReader.readAll();
        // 读取多个sheet
        // ReadSheet sheet1 = EasyExcelFactory.readSheet(0)
        //         // 跳过第一行
        //         .headRowNumber(1)
        //         .registerReadListener(listener)
        //         .build();
        //
        // ReadSheet sheet2 = EasyExcelFactory.readSheet("第二个sheet")
        //         // 跳过第一行
        //         .headRowNumber(1)
        //         .registerReadListener(listener)
        //         .build();
        // ExcelReader excelReader = EasyExcel.read(file.getInputStream()).build().read(sheet1, sheet2);
        List<EasyExcelEntity> data = listener.getData();
        excelReader.finish();
        for (EasyExcelEntity easyExcel : data) {
            /*
             * 逻辑处理
             */
        }
    }

通用EasyExcel监听类

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;

/**
 * @author developer_cw
 * @date 2022-11-28
 */

@Slf4j
public class EasyExcelListener<T> extends AnalysisEventListener {

    /**
     * 自定义用于暂时存储data
     * 可以通过实例获取该值
     */
    private List<T> data = new ArrayList<>();

    /**
     * 每解析一行都会回调invoke()方法
     *  @param pojo  读取后的数据对象
     * @param context 内容
     */
    @Override
    public void invoke(Object pojo, AnalysisContext context) {
        //数据存储到list,供批量处理,或后续自己业务逻辑处理。
        data.add((T) pojo);
        //根据自己业务做处理
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        //解析结束销毁不用的资源
        //注意不要调用data.clear(),否则getData为null
    }

    /**
     * 返回数据
     *
     * @return 返回读取的数据集合
     **/
    public List<T> getData() {
        return data;
    }

    /**
     * 设置读取的数据集合
     *
     * @param data 设置读取的数据集合
     **/
    public void setData(List<T> data) {
        this.data = data;
    }
}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
EasyExcel是一款基于Java的开源工具,用于读取和写入Excel文件。它提供了简单易用的API,可以方便地进行Excel文件的读写操作。 使用EasyExcel读取Excel文件非常简单,只需按照以下步骤进行操作: 1. 引入EasyExcel的依赖。 2. 创建一个Java类,作为数据模型,用于存储读取到的Excel数据。 3. 使用EasyExcel提供的API,打开Excel文件读取数据。 4. 将读取到的数据存储到数据模型中。 5. 关闭Excel文件。 以下是使用EasyExcel读取Excel文件的示例代码: ```java // 引入EasyExcel的依赖 import com.alibaba.excel.EasyExcel; // 创建数据模型类 public class ExcelData { private String name; private int age; // 其他属性... // getter和setter方法... } // 读取Excel文件 public class ReadExcel { public static void main(String[] args) { // Excel文件路径 String filePath = "path/to/excel/file.xlsx"; // 使用EasyExcel提供的API,打开Excel文件读取数据 EasyExcel.read(filePath, ExcelData.class, new ExcelDataListener()).sheet().doRead(); } } // 自定义监听器类,用于处理读取到的数据 public class ExcelDataListener extends AnalysisEventListener<ExcelData> { // 重写父类的方法,处理每一行读取到的数据 @Override public void invoke(ExcelData data, AnalysisContext context) { // 将读取到的数据存储到数据模型中,可以进行自定义操作 System.out.println("Name: " + data.getName()); System.out.println("Age: " + data.getAge()); // 其他操作... } // 重写父类的方法,读取完成后的操作 @Override public void doAfterAllAnalysed(AnalysisContext context) { // 关闭Excel文件等资源 } } ``` 以上就是使用EasyExcel读取Excel文件的简单介绍和示例代码。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值