Java实现Excel的读写操作
EasyExcel使用(写、读操作)
Easy Excel:https://blog.csdn.net/qq_45896330/article/details/125082003
EasyExcel快速开始文档:https://www.yuque.com/easyexcel/doc/easyexcel
步骤:
- 导入依赖
- 添加监听器(只有读操作的时候需要)
- 创建实体
- 实现写操作的具体实现
1.1 导入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.1.1</version>
</dependency>
1.2 EasyExcel实现写操作
- 创建实体
- 实现写操作具体代码
1.2.1 写操作——创建实体
在实体属性中添加注解,设置Excel工作表中的列名
package com.guo.easyexcel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class UserData {
@ExcelProperty("用户编号")
private int uid;
@ExcelProperty("用户名称")
private String username;
}
1.2.2 实现写操作具体代码
EasyExcel.write(导出文件的路径+名称,实体.class)
.sheet("工作表名称")
.doWrite(导出数据的List集合);
package com.guo.easyexcel;
import com.alibaba.excel.EasyExcel;
import java.util.ArrayList;
import java.util.List;
public class TestWrite {
public static void main(String[] args) {
//构建数据的list集合
List<UserData> userDataList = new ArrayList<>();
for (int i = 0; i < 10; i++) {
UserData userData = new UserData();
userData.setUid(i);
userData.setUsername("名称" + i);
userDataList.add(userData);
}
//设置文件路径和文件名称
String fileName = "D:\\excle\\01.xlsx";
EasyExcel.write(fileName,UserData.class)
.sheet("用户信息")
.doWrite(userDataList);
}
}
1.2.3 成功把数据写入到Excel 表格中
1.3 EasyExcel实现读操作
- 创建实体
- 监听器
- 实现读操作具体代码
1.3.1 创建实体
读操作,我们需要定位到Excel表格中的第几列
package com.guo.easyexcel;
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data
public class UserData {
@ExcelProperty(value = "用户编号", index = 0)
private int uid;
@ExcelProperty(value = "用户名称", index = 1)
private String username;
}
1.3.2 添加EastExcel读操作监听器实现AnalysisEventListener< T>类
package com.guo.easyexcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.CellData;
import java.util.Map;
public class ExcelListener extends AnalysisEventListener<UserData> {
/**
* 读取表头信息
* @param headMap
* @param context
*/
@Override
public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {
System.out.println("表头信息:" + headMap);
}
/**
* 一行一行的读取excel内容,从第二行开始读取(第一行默认是表头)
* @param userData
* @param analysisContext
*/
@Override
public void invoke(UserData userData, AnalysisContext analysisContext) {
System.out.println("一行一行的读取:" + userData); //每一行的数据
}
/**
* 读取之后执行
* @param analysisContext
*/
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
1.3.3 实现读操作具体代码
package com.guo.easyexcel;
import com.alibaba.excel.EasyExcel;
public class TestRead {
public static void main(String[] args) {
//读取文件的路径+名称
String fileName = "D:\\excle\\01.xlsx";
//调用方法实现读取操作
EasyExcel.read(fileName,UserData.class,new ExcelListener())
.sheet()
.doRead();
}
}