Java 使用 easyexcel 读取 excel 文件

easyexcel 官网:EasyExcel官方文档 - 基于Java的Excel处理工具 | Easy Excel

1. 引入依赖并给出示例 excel

        
            com.alibaba
            easyexcel
            3.1.0
        

 Java 使用 easyexcel 读取 excel 文件_第1张图片

 

2. 两种读取的方式

        (1)确定表头:建立对象,和表头形成映射。(这里以此为例)

        (2)不确定表头:每一行映射为 Map

3. 先创建 excel 中表头对应的对象类 

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

/**
 * 用户信息表格
 */
@Data
public class TableUserInfo {

    /**
     * id
     */
//    @ExcelProperty(index = 2)  // index 表示在 excel 表中的第几列,但这里用列名表示
    @ExcelProperty("")
    private String planetCode;

    /**
     * 用户昵称
     */
    @ExcelProperty()
    private String username;

}

4. 创建读取 excel 表格的主类,里面有两种方法,注意这两种方法都需要先创建 excel 表格对应的对象类。但只有第二种方法需要创建监听器。

import com.alibaba.excel.EasyExcel;

import java.util.List;

/**
 * 导入 excel 数据
 */
public class ImportExcel {

    /**
     * 读取数据
     * @param args
     */
    public static void main(String[] args) {
        // excel 表格路径
        String fileName = "D:\\testExcel.xlsx";
//        readByListener(fileName);
        synchronousRead(fileName);
    }

    /**
     * 第一种方法:同步读
     * @param fileName
     */
    public static void synchronousRead(String fileName) {
        // 这里 需要指定读用哪个class去读,然后读取第一个sheet 同步读取会自动finish
        List totalDataList =
                EasyExcel.read(fileName).head(TableUserInfo.class).sheet().doReadSync();
        for (TableUserInfo tableUserInfo : totalDataList) {
            System.out.println(tableUserInfo);
        }
    }

    /**
     * 第二种方法:监听器(需要创建监听器)
     * @param fileName
     */
    public static void readByListener(String fileName) {
        EasyExcel.read(fileName, TableUserInfo.class, new TableListener()).sheet().doRead();
    }
}

5. 创建监听器

@Slf4j
public class TableListener implements ReadListener {  // 这里的 TableUserInfo 修改为 excel 对应的对象类

    /**
     * 这个每一条数据解析都会来调用
     *
     * @param data    one row value. Is is same as {@link AnalysisContext#readRowHolder()}
     * @param context
     */
    @Override
    public void invoke(TableUserInfo data, AnalysisContext context) {
        System.out.println(data);
    }

    /**
     * 所有数据解析完成了 都会来调用
     *
     * @param context
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        System.out.println("已解析完成");
    }

}

你可能感兴趣的:(utils,excel,java)