快速上手EasyExcel

EasyExcel简介

​ Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存。

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

开始

导入依赖

  • 在pom文件中加入依赖

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

创建实体类

  • 创建实体类并添加注解

    package com.xlh.EasyExcel;
    
    import com.alibaba.excel.annotation.ExcelProperty;
    import lombok.Data;
    
    @Data
    public class UserData {
        @ExcelProperty(value = "用户编号",index = 0)
        private int uid;
    
        @ExcelProperty(value = "用户名称",index = 1)
        private String username;
    }
    

    数据写操作

    • 将数据写入到excel文件中

      package com.xlh.EasyExcel;
      import com.alibaba.excel.EasyExcel;
      import java.util.ArrayList;
      import java.util.List;
      
      public class testWrite {
          public static void main(String[] args) {
              //构造数据集合
              List<UserData> userData=new ArrayList<>();
              for(int i=0;i<100;i++){
                  UserData userData1=new UserData();
                  userData1.setUid(i);
                  userData1.setUsername("xlh"+i);
                  userData.add(userData1);
              }
              //设置excel文件路径及名称
              String fileName="D:\\01.xlsx";
              //进行写操作
              EasyExcel.write(fileName,UserData.class).sheet("用户列表").doWrite(userData);
          }
      }
      
    • 运行结果

      20201028131432875.png

    数据读操作

    • 将excel数据读出

    • 首先继承AnalysisEventListener类

      package com.xlh.EasyExcel;
      
      import com.alibaba.excel.context.AnalysisContext;
      import com.alibaba.excel.event.AnalysisEventListener;
      
      import java.util.Map;
      
      public class ExcelListener extends AnalysisEventListener<UserData> {
          @Override
          public void invoke(UserData userData, AnalysisContext analysisContext) {
              System.out.println(userData);
          }
      
          @Override
          public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
              System.out.println("表头信息:"+headMap);
          }
      
          @Override
          public void doAfterAllAnalysed(AnalysisContext analysisContext) {
              System.out.println("finished!");
          }
      }
      
    • 测试读取

      package com.xlh.EasyExcel;
      
      import com.alibaba.excel.EasyExcel;
      
      public class TestListener {
          public static void main(String[] args) {
              //excel的路径
              String filename="D:\\01.xlsx";
              //读取
              EasyExcel.read(filename,UserData.class,new ExcelListener()).sheet().doRead();
          }
      }
      
    • 结果

      20201028131432875.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值