0
点赞
收藏
分享

微信扫一扫

utils010_EasyExcel的简单使用

老牛走世界 2022-05-03 阅读 34
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;
    }
}
举报

相关推荐

0 条评论