EasyExcel快速入门

EasyExcel是一个由阿里巴巴开发的Java库,专注于简单且内存效率高的Excel读写。它支持处理大型Excel文件,并提供了通过注解定义实体类和监听器进行数据读写的方法。用户可以创建实体类映射Excel列,实现监听器处理数据读取和写入操作。

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

什么是EasyExcel?

EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。 github地址:https://github.com/alibaba/easyexcel

如何使用?

1.引入依赖
<dependency>
    <groupId>com.alibaba</groupId>
    <artifactId>easyexcel</artifactId>
    <version>3.0.5</version>
</dependency>
2.1读Excel

具体代码参考官网上的demo

https://www.yuque.com/easyexcel/doc/read

总结:

2.1根据excel里的内容,创建对应的实体类

public class Student {
//强制读取第1个 这里不建议 index 和 name 同时用,要么一个对象只用index,要么一个对象只用name去匹配
    @ExcelProperty(index = 0)
    String name;
//用名字去匹配,这里需要注意,如果名字重复,会导致只有一个字段读取到数据
    @ExcelProperty("性别")
    String sex;
    @ExcelProperty("年龄")
    Integer age;
}

2.2创建对应的监听类并且实现ReadListener接口并且需要在监听器内实现两个方法;

invoke方法当EasyExcel解析了一条数据后就会执行;

doAfterAllAnalysed方法,在所有数据都解析完成后会执行;

public class DemoDataListener extends AnalysisEventListener<Student> {
    List<Student> list = new ArrayList<Student>();

    /**
     * 如果使用了spring,请使用这个构造方法。每次创建Listener的时候需要把spring管理的类传进来
     */
    public DemoDataListener() {}
    /**
     * 这个每一条数据解析都会来调用
     *
     * @param data
     * @param context
     */
    @Override
    public void invoke(Student data, AnalysisContext context) {
        System.out.println("解析到一条数据:{}"+JSON.toJSONString(data));
        list.add(data);
    }
    /**
     * 所有数据解析完成了 都会来调用
     *
     * @param context
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println(JSON.toJSONString(list));
    }
}

2.3main方法

 @Test
    public void readExcel(){
        String fileName = "C:\\Users\\MEC\\Desktop\\tyBoys.xls";
        EasyExcel.read(fileName, Student.class, new DemoDataListener()).sheet().doRead();
    }
2.2写Excel
    @Test
    public void writeExcel(){
        //将List写到设定路径的excel表的sheet中
        EasyExcel.write(new File("C:\\Users\\MEC\\Desktop\\tyBoys.xls")).sheet().doWrite(getData());
    }

    public static List<Student> getData(){
        ArrayList<Student> students = new ArrayList<Student>();
        students.add(new Student("曹操","男",50));
        students.add(new Student("曹爽","男",38));
        students.add(new Student("曹仁","男",20));
        return students;
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值