Alibaba开源工具EasyExcel读写Excel文件
前言
工作中使用 excel
表格处理数据是很常见的操作,经常会使用 excel
文件来导入数据或者导出数据,是不是脑海中已经思考有哪些处理excel框架
?
小编之前呢就知道Java 解析、生成 Excel 比较有名的框架
有 Apache poi、jxl,但他们都存在一个严重的问题就是非常的耗内存,poi 有一套 SAX 模式的 API 可以一定程度的解决一些内存溢出的问题,但仍有一些缺陷,比如版本兼容、代码臃肿等。
下面小编推荐给大家看一款非常好用的表格开源框架EasyExcel
是 Alibaba
的 开源的一款快速、简单、可避免 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文件相关推荐
- 阿里EasyExcel读写excel文件的基本使用
EasyExcel读写excel文件 1.EasyExcel简介 2.对excel的写操作 1.1 创建一个普通的maven项目并引入相关依赖 1.2 创建实体类 1.3 实现写操作 1.3.1 创建 ...
- 使用EasyExcel读写Excel文件
笔者之前一直使用POI读写Excel文件,最近有个需求需要读取大概80万行数据的Excel,使用POI读取到10.2万行左右就卡死不动了,而且CPU占用直接拉满到100%,内存占用也很高. 查找资料后 ...
- 使用阿里 EasyExcel 读写 Excel 文件
首先 pom.xml 引入依赖,EasyExcel 版本更新快,不同版本 API 均有不同,有些已经废弃. <dependency><groupId>com.alibaba&l ...
- 基于POI的读写Excel文件的工具类
依赖的jar包: import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStrea ...
- java读写excel文件poi_Java利用POI读写Excel文件工具类
本文实例为大家分享了Java读写Excel文件工具类的具体代码,供大家参考,具体内容如下 package com.test.app.utils; import java.io.File; import ...
- EasyExcel实现Excel文件导入导出
1 EasyExcel简介 EasyExcel是一个基于Java的简单.省内存的读写Excel的开源项目.在尽可能节约内存的情况下支持读写百M的Excel. github地址: https://git ...
- 阿里的Easyexcel读取Excel文件(最新版本)
本篇文章主要介绍一下使用阿里开源的Easyexcel工具处理读取excel文件,因为之前自己想在网上找一下这个简单的立即上手的博客,发现很多文章的教程都针对比较旧的版本的Easyexcel,没有使 ...
- easyexcel导入时读不到数据_SpringBoot中EasyExcel实现Excel文件的导入导出
前言 在我们日常的开发过程中经常会使用Excel文件的形式来批量地上传下载系统数据,我们最常用的工具是Apache poi,但是如果数据到底上百万时,将会造成内存溢出的问题,那么我们怎么去实现百万数据 ...
- POI封装工具easyexcel导出EXCEL表样式设置
POI封装工具easyexcel导出EXCEL表样式设置 java中对Office操作比较好的工具是POI,但POI在导出数据量较大的情况下很容易因内存占用过大,而出错,阿里巴巴推出的easyexce ...
最新文章
- 遇到这四种面试官,接了 Offer 你可能会后悔
- 树莓派文件服务器nas,树莓派搭建NAS服务器
- AS打开速度慢,AS项目导入慢,新建项目导入慢
- NGINX 进程通信机制
- 面试题(C++09:Autodesk)
- php中数组生成下拉选项,php数组生成html下拉列表的方法
- jsp网站使用ffmpeg实现为.flv格式视频截图
- PHP下ereg实现匹配ip的正则
- 数字图像处理理论课件(清华大学计算机科学与技术)
- 单片机原理及应用(c51语言版)(一)
- 西门子S7-1200系列PLC Modbus通信的踩坑记录
- html鼠标悬停边框颜色,CSS实现鼠标悬停图片时的边框变色效果
- 用shell bash自动化程序
- win7计算机开机启动项设置,如何设置WIN7开机启动项?
- SEO中的关键词密度该如何布局
- 简单教会按关键字搜索商品
- 谷歌此号码无法验证解决
- Linux中tar和scp
- 利用tcp三次握手,使用awl伪装MAC地址进行多线程SYN洪水攻击
- 真爱过的人,不会再有爱~
热门文章
- VUE—仿照淘宝历史记录的添加和删除(图文)
- TS H5页面中判断在微博,微信等环境下
- jsp+ssm企业人事工资管理ssm人事管理系统(源码+文档下载)
- 中职高考计算机专业课,中职计算机专业课考题.docx
- github在线编程
- python把正斜杠替换成反斜杠_【转】python中的正斜杠、反斜杠
- 江西师范计算机研究生,江西师范大学研究生院
- 陕西师范大学公费师范生计算机,陕西师范大学2021年各省招生计划出炉,招收公费师范生2000余人...
- android 模拟黑胶唱片,如何搓合模拟与数字音乐,Sony黑胶唱机告诉你答案
- hsqldb数据库启动遇到的问题