utils010_EasyExcel的简单使用

本文展示了如何使用阿里巴巴的EasyExcel库在Java中进行Excel数据的读写操作。通过创建监听器和数据实体类,实现了数据的批量读取与写入,避免了内存溢出问题。示例代码详细解释了读写过程,并提供了数据实体Dog的定义。

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

package com.jingsong.test;

import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import com.jingsong.entity.Dog;

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

/**
 * @author jingsong
 * @date 2022/5/1 14:19
 * @desc EasyExcel 阿里出品
 * @warn 不要把pojo写在当前类的下面,不然读取的时候会报异常,分开包写
 * @localtion https://www.yuque.com/easyexcel/doc/easyexcel
 */
public class EasyExcelTest {

    public static void main(String[] args) {
        // 0. 数据准备
        List<Dog> dogs = Dog.getSomeDogs();
        String fileName = "D:\\IdeaProjects\\springboot\\boot01\\src\\main\\resources\\data\\dogs.xls";

        // 1. 写入excel
        //EasyExcel.write(fileName, Dog.class).sheet().doWrite(dogs);

        // 2. 读取excel
        /*
            注意:1. 这里数据量大的话需要分批次处理数据,否则一律add到集合中容易oom
                 这一点也是EasyExcel的好处,可以分批处理数据
                 2. 应用更多的是使用inputStream的方式传入
         */
        List<Dog> dogReads = new ArrayList<>();
        EasyExcel.read(fileName, Dog.class, new ReadListener<Dog>() {
            @Override
            public void invoke(Dog dog, AnalysisContext context) {
                dogReads.add(dog);
            }

            @Override
            public void doAfterAllAnalysed(AnalysisContext context) {
                System.out.println(context);
            }
        }).sheet().doRead();
        dogReads.forEach(System.out::println);
    }

}
package com.jingsong.entity;

import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

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

/**
 * @ExcelProperty 1. 为excel文件第一行的标头
 *                2. index第几列 value标头内容
 *                3. index优先级更高,与书写顺序无关
 * @ExcelIgnore 忽略这个字段
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
public class Dog {

    @ExcelProperty(value = "名字", index = 2)
    private String name;
    @ExcelProperty(index = 1, value = "年龄")
    private Integer age;
    @ExcelProperty(value = "老家", index = 0)
    private String home;
    @ExcelIgnore
    private List<String> hobbies;

    public static List<Dog> getSomeDogs() {
        List<Dog> dogs = new ArrayList<>(10);
        for (int i = 0; i < 10; i++) {
            dogs.add(new Dog("dog" + i, i, "home" + i, Arrays.asList("aa", "bb")));
        }
        return dogs;
    }
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值