当前位置:   article > 正文

使用EasyExcel读写Excel文件_easyexcel写入现有的excel

easyexcel写入现有的excel


一、EasyExcel介绍

Java解析、生成Excel比较有名的框架有Apache poijxl。但这两个技术都非常的消耗内存。目前流行的解决方案是使用阿里出品的EasyExcel框架EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。

使用前需要引入EasyExcel的依赖,这里以2.1.1版本为例。

<dependency>
	<groupId>com.alibaba</groupId>
	<artifactId>easyexcel</artifactId>
	<version>2.1.1</version>
</dependency>
  • 1
  • 2
  • 3
  • 4
  • 5

二、将数据写入Excel

1.创建excel对应的实体对象

创建excel对应的实体对象实际上就是Excel数据表中的表头属性。

import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;

/**
 * @Description: 创建excel对应的实体对象
 * @author Guoqianliang
 * @date 19:47 - 2021/4/14
 */
@Data
public class UserData {
    @ExcelProperty(value = "用户编号", index = 0)
    private int id;
    @ExcelProperty(value = "用户名", index = 1)
    private String username;
    @ExcelProperty(value = "性别", index = 2)
    private String gender;
    @ExcelProperty(value = "工资", index = 3)
    private Double salary;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

2.write方法实现写操作

在具体的写方法中,write方法传入两个参数:

  • String pathName:excel文件路径和文件名称。
  • Class head:excel表头对应的实体类。
import com.alibaba.excel.EasyExcel;

import java.util.ArrayList;
import java.util.List;

/**
 * @Description: 使用EasyExcel将数据写入Excel
 * @author Guoqianliang
 * @date 19:50 - 2021/4/14
 */
public class TestWrite {
    public static void main(String[] args) {
        // 向list集合添加100条数据
        List<UserData> list = new ArrayList<>();
        for (int i = 0; i < 100; i++) {
            UserData data = new UserData();
            data.setId(i);
            data.setUsername("Hudie" + i + "号");
            data.setGender("男");
            data.setSalary(100000.00);
            list.add(data);
        }

        // 设置excel文件路径和文件名称
        String fileName = "D:\\Program Files (x86)\\test\\01.xlsx";

        // write方法实现写操作
        EasyExcel.write(fileName, UserData.class).sheet("用户信息")
                .doWrite(list);
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

3.测试结果分析

项目运行后,成功将100条数据写入Excel表格:
成功将100条数据写入Excel

将数据写入Excel流程

三、将数据读出Excel

1.配置监听器

监听器中重载的三个方法:

  • invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context):读取表头内容。
  • invoke(UserData userData, AnalysisContext analysisContext):从第二行开始读取依次读取每行内容,userData中存储了读取到的数据。
  • doAfterAllAnalysed(AnalysisContext analysisContext):读取之后执行的方法。
public class ExcelListener extends AnalysisEventListener<UserData> {
    // 读取第一行表头内容
    @Override
    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
        System.out.println("表头信息" + headMap);
    }

    // 从第二行开始一行一行读取excel内容,每行内容读取到userData中
    @Override
    public void invoke(UserData userData, AnalysisContext analysisContext) {
        System.out.println(userData);
    }

    // 读取之后执行
    @Override
    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
        System.out.println("读取完毕!");
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

2.read方法实现写操作

在具体的写方法中,read方法传入三个参数:

  • String pathName:excel文件路径和文件名称。
  • Class head:excel表头对应的实体类。
  • ReadListener readListener:监听器。
public class TestRead {
    public static void main(String[] args) {
        // 要读取文件的路径
        String fileName = "D:\\Program Files (x86)\\test\\01.xlsx";
        // 调用read方法实现读取操作
        EasyExcel.read(fileName, UserData.class, new ExcelListener()).sheet("用户信息").doRead();
    }
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

3.测试结果分析

成功将100条数据从Excel读出
至此,使用EasyExcel读写Excel文件演示完毕。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/590418
推荐阅读
相关标签
  

闽ICP备14008679号