EasyExcel.read读取 Excel 文件

EasyExcel.read读取 Excel 文件

  1. 基本概念

    • EasyExcel.read是 EasyExcel 库中的一个重要功能,用于读取 Excel 文件。EasyExcel 是一个基于 Java 的简单、高效的 Excel 处理工具,它可以让开发者更加方便地读取和写入 Excel 文件,避免了使用传统的Apache POI处理 Excel 时复杂的操作和高内存占用的问题。
  2. 使用步骤

    • 第一步:添加依赖

      • 首先需要在项目的pom.xml(如果是 Maven 项目)中添加 EasyExcel 的依赖。例如:
      xml 复制代码
      <dependency>
          <groupId>com.alibaba</groupId>
          <artifactId>easyexcel</artifactId>
          <version>3.1.1</version>
      </dependency>
      • 这一步确保项目能够使用 EasyExcel 相关的类和功能。
    • 第二步:定义数据模型(实体类)

      • 需要创建一个 Java 实体类来映射 Excel 文件中的数据。例如,如果 Excel 文件中有姓名和年龄两列,实体类可以定义如下:
      java 复制代码
      import com.alibaba.excel.annotation.ExcelProperty;
      import lombok.Data;
      
      @Data
      public class User {
          @ExcelProperty("姓名")
          private String name;
          @ExcelProperty("年龄")
          private int age;
      }
      • 这里的@ExcelProperty注解用于指定 Excel 列的标题与实体类属性的对应关系。
    • 第三步:读取 Excel 文件

      • 可以使用EasyExcel.read方法来读取 Excel 文件。例如:
      java 复制代码
      import com.alibaba.excel.EasyExcel;
      import java.io.File;
      import java.util.ArrayList;
      import java.util.List;
      
      public class ExcelReader {
          public static void main(String[] args) {
              String fileName = "your_excel_file_path.xlsx";
              List<User> userList = new ArrayList<>();
              EasyExcel.read(new File(fileName), User.class, new AnalysisEventListener<User>() {
                  @Override
                  public void invoke(User user, AnalysisContext analysisContext) {
                      userList.add(user);
                  }
      
                  @Override
                  public void doAfterAllAnalysed(AnalysisContext analysisContext) {
                      System.out.println("读取完成,数据列表:");
                      for (User user : userList) {
                          System.out.println("姓名:" + user.getName() + ",年龄:" + user.getAge());
                      }
                  }
              }).sheet().doRead();
          }
      }
      • 在这个例子中,EasyExcel.read方法接收三个参数:Excel 文件(可以是File对象或者文件路径)、数据模型的类(这里是User.class)和一个AnalysisEventListener
      • AnalysisEventListener是一个回调接口,用于处理读取到的每一行数据和读取完成后的操作。invoke方法会在读取每一行数据时被调用,将数据添加到userList中。doAfterAllAnalysed方法在整个 Excel 文件读取完成后被调用,用于打印出读取的数据列表。
  3. 高级功能

    • 读取指定列或行

      • 可以通过ReadSheet对象来指定读取 Excel 文件中的特定列或行。例如,要只读取第一列和第三列的数据,可以这样设置:
      java 复制代码
      ReadSheet readSheet = EasyExcel.readSheet().build();
      readSheet.setHeadRowNumber(0); // 设置表头所在行数
      readSheet.setSelectedColumns(0, 2); // 选择第1列和第3列(列索引从0开始)
      EasyExcel.read(new File(fileName), User.class, new AnalysisEventListener<User>() {
          //...
      }).sheet(readSheet).doRead();
    • 大数据量读取

      • EasyExcel 在处理大数据量 Excel 文件时有很好的性能。它采用了逐行读取的方式,避免了一次性将整个 Excel 文件数据加载到内存中。在读取大量数据时,可以通过调整batchSize参数来控制每次读取的数据行数,进一步优化性能。例如:
      java 复制代码
      EasyExcel.read(new File(fileName), User.class, new AnalysisEventListener<User>() {
          @Override
          public void invoke(User user, AnalysisContext analysisContext) {
              //...
          }
      
          @Override
          public void doAfterAllAnalysed(AnalysisContext analysisContext) {
              //...
          }
      }).sheet().headRowNumber(0).doRead();
      • 这里可以在AnalysisEventListenerinvoke方法中对每一批次的数据进行处理,如插入数据库等操作,从而高效地处理大量 Excel 数据。
相关推荐
葡萄城技术团队4 小时前
为什么很多企业最终都会重新评估“自研 Excel”的成本?
excel
AI导出鸭1 天前
怎么让Claude做表格?AI导出鸭苹果版将Claude输出的Markdown表格或结构化列表智能解析为二维数据,一键导出Excel/Word标准表格。
人工智能·chatgpt·word·excel·ai导出鸭
慧都小妮子2 天前
前端实现复杂公式计算:SpreadJS 在京东物流 Udata 平台的落地实践
javascript·数据分析·excel·数据可视化·spreadjs·前端表格控件
葡萄城技术团队2 天前
告别宽表拖拽:SpreadJS 如何让 Web 表格承接 Excel 操作习惯
数据库·html·excel
如意机反光镜裸2 天前
如何合并局域网共享文件夹中的多个 Excel 工作簿?(免 WPS 会员解决方案)
服务器·excel·wps
不剪发的Tony老师2 天前
DuckDB数据分析实战:读写Excel文件
数据分析·excel·duckdb
lengjingzju3 天前
一天掌握Vim,精华使用笔记
笔记·vim·excel
灵析表格4 天前
灵析表格财务函数深度实用性分析与实操教程
开发语言·ai·json·excel·wps
杰夫(简道云个人搭建)4 天前
SAAS系统应该先解决业务问题,再优化体验
数据库·人工智能·低代码·excel·个人开发
AI导出鸭5 天前
怎么让豆包做表格?AI导出鸭苹果版将豆包输出的管道表格智能解析为二维结构,一键导出为Excel或Word标准表格。
人工智能·chatgpt·word·excel·ai导出鸭