springBoot整合easyexcel两种方式

本文详细介绍如何使用EasyExcel进行Excel文件的读写操作。包括依赖引入、表单对象创建及数据读写的具体实现方式,并提供了监听器的使用示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、依赖引入


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

在这需要引入easyexcel的jar(必须),在实际项目还会引入

 		<dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
            <version>1.2.73</version>
        </dependency>

二、代码实现

1.建表单对象

比较推荐这一种写法,可以直接将表单的每一条直接转成对象。
注意:这里推荐的写法是读取时采用@ExcelProperty(index = 1),给index值的这种写法
在导出excel文件的时候,需要写value值,这样excel就不需要自己处理表头

@Data
public class ExcelMode extends BaseRowModel {

    @ExcelProperty(index = 0,value = "模型运行日期")
    private String date;

    @ExcelProperty(index = 1)
    private String time;

    @ExcelProperty(index = 2)
    private String place;

    /**
     * 2m温度
     */
    @ExcelProperty(index = 3)
    private Double tempera2;

    /**
     * 地表温度
     */
    @ExcelProperty(index = 4)
    private Double tempera;

    /**
     * <p>比湿</p>
     */
    @ExcelProperty(index = 5)
    private Double bishi;

    ..........
}

@Data
public class UserExcel{
    @ExcelProperty(index = 0,value = "姓名")
    private String name;
}

2.读入数据

老版本的写法,目前已经被废弃了不推荐使用

业务代码

public static void main(String[] args) throws FileNotFoundException {
        String readPath = "a.xlsx";
        // sheetNo:从0开始 headLineMun:除去表头(表头为0)
        Sheet sheet = new Sheet(0, 1, ExcelMode.class);
        // 这里的read就是excel解析后的对象数组
        List<Object> read = EasyExcelFactory.read(new FileInputStream(readPath), sheet);
        System.out.println();
        }

下面是新版本的写法,这种写法推荐自己写一个监听器继承(AnalysisEventListener),可以实现自定义

业务代码

 public static void main(String[] args) throws FileNotFoundException {
        String file = "t.xlsx";
        String reFile = "re.xlsx";
        UserExcelListener listener = new UserExcelListener();
        // 读取
        EasyExcel.read(new File(file), UserExcel.class, listener).sheet(0).doRead();
        // 写入
        EasyExcel.write(reFile, UserExcel.class).sheet(0,"用户表").doWrite(listener.getUsers());
        System.out.println();
    }

监听

@Slf4j
public class UserExcelListener extends AnalysisEventListener<UserExcel> {

    private List<UserExcel> users = new ArrayList<>();

    @Override
    public void invoke(UserExcel userExcel, AnalysisContext analysisContext) {
        log.info("解析数据:{}", JSON.toJSONString(userExcel));
        users.add(userExcel);
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
//        users.clear();
    }

    public List<UserExcel> getUsers() {
        return users;
    }

    public void setUsers(List<UserExcel> users) {
        this.users = users;
    }


}

总结

欢迎沟通交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值