当前位置: 首页 > news >正文

EasyExcel学习笔记

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 read:ReadSheetHolder{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 - 读取完成了...

相关文章:

  • 企业门户网站模板html/广东深圳今天最新通知
  • 南京市环保局官方南京做网站/石家庄seo结算
  • 张家界网站建设的公司/seo门户网价格是多少钱
  • Petrozavodsk Winter Camp 部分题解
  • 贪心策略(二)兑换零钱(最后还得是动规)
  • 基于yolo5的图像行人轨迹搜索(完整代码)
  • base64编码与解码
  • day 21|● 530.二叉搜索树的最小绝对差 ● 501.二叉搜索树中的众数 ● 236. 二叉树的最近公共祖先
  • 【白皮书】PROFIBUS网络诊断
  • 租房需要注意些什么?
  • 02 技术太卷我学Apex-级联值列表
  • 聚焦技术与体验极致提升,阿里云视频云连续5年领跑!
  • NISP三级证书含金量如何
  • 2023-01-17 PostgreSQL 并行查询概述
  • 生物素点击标记试剂:DBCO-SS-PEG3-biotin,1430408-09-5,生物素PEG3二硫键DBCO