1.EasyExcel介绍
EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。
2.EasyExcel使用
引入依赖
<dependencies>
<!-- https://mvnrepository.com/artifact/com.alibaba/easyexcel -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
</dependencies>
创建实体类对象
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class UserData {
@ExcelProperty("用户编号")
private int userId;
@ExcelProperty("用户姓名")
private String username;
}
进行写入操作
public class Test {
public static void main(String[] args) {
//构建数据list结合
List<UserData> list=new ArrayList<>();
for (int i=0;i<10;i++) {
UserData userData=new UserData();
userData.setUserId(i);
userData.setUsername("L"+i);
list.add(userData);
}
//设置excel文件路径和文件名称
String filename="D://excel//1.xlsx";
//调用方法实现写操作
EasyExcel.write(filename,UserData.class).sheet("用户信息")
.doWrite(list);
}
}
测试成功
进行读取操作
修改实体类属性的注解
@Data
public class UserData {
@ExcelProperty(value = "用户编号",index = 0)
private int userId;
@ExcelProperty(value = "用户姓名",index = 1)
private String username;
}
设置监听器
public class ExcelListener extends AnalysisEventListener<UserData> {
//一行一行读取excel内容,从第二行读取
@Override
public void invoke(UserData userData, AnalysisContext analysisContext) {
System.out.println(userData);
}
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头信息:"+headMap);
}
//读取之后执行
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
进行读取操作
public class TestRead {
public static void main(String[] args) {
// 读取文件路径
String fileName = "F:\\excel\\01.xlsx";
//调用方法实现读取操作
EasyExcel.read(fileName, UserData.class,new ExcelListener()).sheet().doRead();
}
}