快速上手EasyExcel

EasyExcel简介

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

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

开始

导入依赖

  • 在pom文件中加入依赖

     
     <dependency>
         <groupId>com.alibabagroupId>
         <artifactId>easyexcelartifactId>
         <version>2.1.1version>
     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);
          }
      }
      
    • 运行结果

      快速上手EasyExcel_第1张图片

    数据读操作

    • 将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();
          }
      }
      
    • 结果

      快速上手EasyExcel_第2张图片

你可能感兴趣的:(java,开发语言,后端)