EasyExcel学习笔记

阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6

EasyExcel学习笔记

EasyExcel 用于 Java解析、生成Excel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。

官方文档地址https://alibaba-easyexcel.github.io/index.html

1.excel导出步骤

第一步添加依赖。

<dependencies>
    <!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>easyexcel</artifactId>
        <version>2.1.1</version>
    </dependency>
</dependencies>

第二步创建实体类。在对应属性上添加注解 @ExcelProperty 来设置表头。

@Data
public class UserData {

    @ExcelProperty("用户编号")
    private int uid;

    @ExcelProperty("用户名称")
    private String username;

}

第三步执行 excel 的导出。

/**
 * Parker
 **/
public class TestExcel {
    public static void main(String[] args) {
        //构建数据list集合
        List<UserData> list = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            UserData userData = new UserData();
            userData.setUid(i);
            userData.setUsername("user" + i);
            list.add(userData);
        }
        //设置excel文件路径和文件名称
        String fileName = "D:\\workplace\\IMedi_excel";
        //调用方法实现写操作
        EasyExcel.write(fileName, UserData.class)
                .sheet("用户信息")
                .doWrite(list);
    }
}

2.excel导入步骤

第一步修改实体类。在注解 @ExcelProperty 上添加属性来指定属性所要读取的对应列号。

@Data
public class UserData {

    @ExcelProperty(value = "用户编号", index = 0)
    private int uid;

    @ExcelProperty(value = "用户名称", index = 1)
    private String username;

}

第二步创建一个监听器。在监听器里编写读取方法。

@Slf4j
public class ExcelListener extends AnalysisEventListener<UserData> {

    /**
     * 1.一行一行读取excel内容从第二行开始读取不读取表头信息
     * @param userData
     * @param analysisContext
     */
    @Override
    public void invoke(UserData userData, AnalysisContext analysisContext) {
        log.info(userData.toString());
    }

    /**
     * 2.读取表头信息
     * @param headMap
     * @param context
     */
    @Override
    public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {
        log.info("表头信息{}",headMap);
    }

    /**
     * 3.读取之后执行
     * @param analysisContext
     */
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        log.info("读取完成了...");
    }
}

第三步执行 excel 的读取。

/**
 * Parker
 **/
public class TestExcel {
    public static void main(String[] args) {

        //设置excel文件路径和文件名称
        String fileName = "D:\\workplace\\IMedi_excel\\01.xlsx";
        //调用方法实现读操作
        EasyExcel.read(fileName,UserData.class,new ExcelListener()).sheet().doRead();
    }
}

读取成功输出日志信息。

22:56:01.107 [main] DEBUG com.alibaba.excel.context.AnalysisContextImpl - Began to readReadSheetHolder{sheetNo=0, sheetName='用户信息'} com.alibaba.excel.read.metadata.holder.ReadSheetHolder@47db50c5
22:56:01.148 [main] INFO ExcelListener - 表头信息{0=用户编号, 1=用户名称}
22:56:01.228 [main] INFO ExcelListener - UserData(uid=0, username=user0)
22:56:01.229 [main] INFO ExcelListener - UserData(uid=1, username=user1)
22:56:01.229 [main] INFO ExcelListener - UserData(uid=2, username=user2)
22:56:01.230 [main] INFO ExcelListener - UserData(uid=3, username=user3)
22:56:01.230 [main] INFO ExcelListener - UserData(uid=4, username=user4)
22:56:01.230 [main] INFO ExcelListener - UserData(uid=5, username=user5)
22:56:01.231 [main] INFO ExcelListener - UserData(uid=6, username=user6)
22:56:01.231 [main] INFO ExcelListener - UserData(uid=7, username=user7)
22:56:01.231 [main] INFO ExcelListener - UserData(uid=8, username=user8)
22:56:01.231 [main] INFO ExcelListener - UserData(uid=9, username=user9)
22:56:01.232 [main] INFO ExcelListener - 读取完成了...
阿里云国内75折 回扣 微信号:monov8
阿里云国际,腾讯云国际,低至75折。AWS 93折 免费开户实名账号 代冲值 优惠多多 微信号:monov8 飞机:@monov6