一、EasyExcel介绍
Java解析、生成Excel比较有名的框架有Apache poi
、jxl
。但这两个技术都非常的消耗内存。目前流行的解决方案是使用阿里出品的EasyExcel框架。EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。
使用前需要引入EasyExcel的依赖,这里以2.1.1版本为例。
<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;
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;
}
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);
}
}
3.测试结果分析
项目运行后,成功将100条数据写入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("读取完毕!");
}
}
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();
}
}
3.测试结果分析
至此,使用EasyExcel读写Excel文件演示完毕。
转载:https://blog.csdn.net/weixin_43691058/article/details/115708345
查看评论