前言
工作中使用 excel 表格处理数据是很常见的操作,经常会使用 excel 文件来导入数据或者导出数据,是不是脑海中已经思考有哪些处理excel框架
小编之前呢就知道Java 解析、生成 Excel 比较有名的框架有 Apache poi、jxl,但他们都存在一个严重的问题就是非常的耗内存,poi 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但仍有一些缺陷,比如版本兼容、代码臃肿等。
下面小编推荐给大家看一款非常好用的表格开源框架EasyExcelAlibaba 的 开源的一款快速、简单、可避免 OOM 的 java 处理 Excel 工具。easyexcel 重写了 poi 对 07 版 Excel 的解析,对原本一个 3M 的 excel 用 POI sax 需要 100M 左右的内存降低到几 M,并且再大的 excel 也不会出现内存溢出。
那我们就话不多说,赶紧上代码干货!

使用EasyExcel读写Excel文件

  • 一、EasyExcel安装
  • 二、将数据写入Excel
    • 1.创建excel对应的实体对象
    • 2.write方法实现写操作
    • 3.测试结果分析
  • 三、将数据读出Excel
    • 1.配置监听器
    • 2.read方法实现写操作
    • 3.测试结果分析

一、EasyExcel安装

环境要求:maven + Java JDK 1.8 + easyexcel 2.1.1,新建一个 maven 应用,然后 pom.xml 文件导入 EasyExcel的依赖,如下图所示

<dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.1</version>
</dependency>

二、将数据写入Excel

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

接下来我们需要创建excel对应的实体对象类,实际上就是Excel数据表中的表头属性,贴代码如图所示。

import com.alibaba.excel.annotation.ExcelProperty;/*** @param* @author wcy* @create 2022/10/15* @return* @description**/
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;public int getId() {return id;}@Overridepublic String toString() {return "UserData{" +"id=" + id +", username='" + username + '\'' +", gender='" + gender + '\'' +", salary=" + salary +'}';}public void setId(int id) {this.id = id;}public String getUsername() {return username;}public void setUsername(String username) {this.username = username;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}public Double getSalary() {return salary;}public void setSalary(Double salary) {this.salary = salary;}
}

2.write方法实现写操作

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

  • String pathName:excel文件路径和文件名称。

  • Class head:excel表头对应的实体类。

import com.alibaba.excel.EasyExcel;import java.util.ArrayList;
import java.util.List;/*** @param* @author wcy* @create 2022/10/15* @return* @description**/
public class EasyExcelTest {public static void main(String[] args) {//向list集合添加5条数据List<UserData> list = new ArrayList<>();for (int i=0;i <5; i++){UserData data = new UserData();data.setId(i);data.setUsername("xiaohong" + i + "号");data.setGender("男");data.setSalary(1000.00);list.add(data);}// 设置excel文件路径和文件名称String fileName = "/Users/kobe/Desktop/01.xlsx";// write方法实现写操作EasyExcel.write(fileName,UserData.class).sheet("用户信息").doWrite(list);}
}

3.测试结果分析

然后我们把项目运行后,成功将5条数据写入Excel表格:

三、将数据读出Excel

1.配置监听器

需要继承AnalysisEventListener监听器重载的三个方法:

1 invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context):读取表头内容。
2.invoke(UserData userData, AnalysisContext analysisContext):从第二行开始读取依次读取每行内容,userData中存储了读取到的数据。
3.doAfterAllAnalysed(AnalysisContext analysisContext):读取之后执行的方法。

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;import java.util.Map;/*** @param* @author wcy* @create 2022/10/15* @return* @description**/
public class ExcelListenterTest extends AnalysisEventListener <UserData>{// 读取第一行表头内容@Overridepublic void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {System.out.println("表头信息" + headMap);}// 从第二行开始一行一行读取excel内容,每行内容读取到userData中@Overridepublic void invoke(UserData userData, AnalysisContext analysisContext) {System.out.println(userData);}// 读取之后执行@Overridepublic void doAfterAllAnalysed(AnalysisContext analysisContext) {System.out.println("读取结束!");}
}

2.read方法实现写操作

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

  • String pathName:excel文件路径和文件名称。

  • Class head:excel表头对应的实体类。

  • ReadListener readListener:监听器。

import com.alibaba.excel.EasyExcel;/*** @param* @author wcy* @create 2022/10/15* @return* @description**/
public class EasyExcelRead {public static void main(String[] args) {// 要读取文件的路径String fileName = "/Users/kobe/Desktop/01.xlsx";// 调用read方法实现读取操作EasyExcel.read(fileName,UserData.class,new ExcelListenterTest()).sheet("用户信息").doRead();}
}

3.测试结果分析

我们来运行下项目,已经看到控制台成功读取出Excel里的5条数据,有没有发现既简单又好用,你学废了么!

Alibaba开源工具EasyExcel读写Excel文件相关推荐

  1. 阿里EasyExcel读写excel文件的基本使用

    EasyExcel读写excel文件 1.EasyExcel简介 2.对excel的写操作 1.1 创建一个普通的maven项目并引入相关依赖 1.2 创建实体类 1.3 实现写操作 1.3.1 创建 ...

  2. 使用EasyExcel读写Excel文件

    笔者之前一直使用POI读写Excel文件,最近有个需求需要读取大概80万行数据的Excel,使用POI读取到10.2万行左右就卡死不动了,而且CPU占用直接拉满到100%,内存占用也很高. 查找资料后 ...

  3. 使用阿里 EasyExcel 读写 Excel 文件

    首先 pom.xml 引入依赖,EasyExcel 版本更新快,不同版本 API 均有不同,有些已经废弃. <dependency><groupId>com.alibaba&l ...

  4. 基于POI的读写Excel文件的工具类

    依赖的jar包: import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStrea ...

  5. java读写excel文件poi_Java利用POI读写Excel文件工具类

    本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import ...

  6. EasyExcel实现Excel文件导入导出

    1 EasyExcel简介 EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址: https://git ...

  7. 阿里的Easyexcel读取Excel文件(最新版本)

      本篇文章主要介绍一下使用阿里开源的Easyexcel工具处理读取excel文件,因为之前自己想在网上找一下这个简单的立即上手的博客,发现很多文章的教程都针对比较旧的版本的Easyexcel,没有使 ...

  8. easyexcel导入时读不到数据_SpringBoot中EasyExcel实现Excel文件的导入导出

    前言 在我们日常的开发过程中经常会使用Excel文件的形式来批量地上传下载系统数据,我们最常用的工具是Apache poi,但是如果数据到底上百万时,将会造成内存溢出的问题,那么我们怎么去实现百万数据 ...

  9. POI封装工具easyexcel导出EXCEL表样式设置

    POI封装工具easyexcel导出EXCEL表样式设置 java中对Office操作比较好的工具是POI,但POI在导出数据量较大的情况下很容易因内存占用过大,而出错,阿里巴巴推出的easyexce ...

最新文章

  1. 遇到这四种面试官,接了 Offer 你可能会后悔
  2. 树莓派文件服务器nas,树莓派搭建NAS服务器
  3. AS打开速度慢,AS项目导入慢,新建项目导入慢
  4. NGINX 进程通信机制
  5. 面试题(C++09:Autodesk)
  6. php中数组生成下拉选项,php数组生成html下拉列表的方法
  7. jsp网站使用ffmpeg实现为.flv格式视频截图
  8. PHP下ereg实现匹配ip的正则
  9. 数字图像处理理论课件(清华大学计算机科学与技术)
  10. 单片机原理及应用(c51语言版)(一)
  11. 西门子S7-1200系列PLC Modbus通信的踩坑记录
  12. html鼠标悬停边框颜色,CSS实现鼠标悬停图片时的边框变色效果
  13. 用shell bash自动化程序
  14. win7计算机开机启动项设置,如何设置WIN7开机启动项?
  15. SEO中的关键词密度该如何布局
  16. 简单教会按关键字搜索商品
  17. 谷歌此号码无法验证解决
  18. Linux中tar和scp
  19. 利用tcp三次握手,使用awl伪装MAC地址进行多线程SYN洪水攻击
  20. 真爱过的人,不会再有爱~

热门文章

  1. VUE—仿照淘宝历史记录的添加和删除(图文)
  2. TS H5页面中判断在微博,微信等环境下
  3. jsp+ssm企业人事工资管理ssm人事管理系统(源码+文档下载)
  4. 中职高考计算机专业课,中职计算机专业课考题.docx
  5. github在线编程
  6. python把正斜杠替换成反斜杠_【转】python中的正斜杠、反斜杠
  7. 江西师范计算机研究生,江西师范大学研究生院
  8. 陕西师范大学公费师范生计算机,陕西师范大学2021年各省招生计划出炉,招收公费师范生2000余人...
  9. android 模拟黑胶唱片,如何搓合模拟与数字音乐,Sony黑胶唱机告诉你答案
  10. hsqldb数据库启动遇到的问题