文档地址:https://alibaba-easyexcel.github.io/index.html
github地址:https://github.com/alibaba/easyexcel
导出示例:https://alibaba-easyexcel.github.io/quickstart/write.html
导入示例:https://alibaba-easyexcel.github.io/quickstart/read.html
1、写操作
实体类:
import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
@Data//注解自动生成get/set
public class UserData {
@ExcelProperty("用户编号")
private int uid;
@ExcelProperty("用户名称")
private String username;
}
调用方法:
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> list=new ArrayList();
for (int i=0;i<10;i++){
UserData data=new UserData();
data.setUid(i);
data.setUsername("aaa"+i);
list.add(data);
}
//设置excel文件路径
String filename="F:\\01.xlsx";
//调用方法
EasyExcel.write(filename,UserData.class).sheet("用户信息")
.doWrite(list);
}
}
结果:
2、读操作
实体类:
@Data
public class UserData {
@ExcelProperty(value = "用户编号",index = 0)
private int uid;
@ExcelProperty(value = "用户名称",index = 1)
private String username;
}
监听类:
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import java.util.Map;
public class ExcelListener extends AnalysisEventListener<UserData> {
//读取第一行表头
@Override
public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
System.out.println("表头:"+headMap);
}
//从第二行开始,一行一行的读取内容
@Override
public void invoke(UserData userData, AnalysisContext analysisContext) {
System.out.println(userData);
}
//读取之后执行
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
}
}
调用方法:
import com.alibaba.excel.EasyExcel;
public class TestRead {
public static void main(String[] args) {
//读取文件路径
String filename="F://01.xlsx";
//调用方法
EasyExcel.read(filename,UserData.class,new ExcelListener()).sheet().doRead();
}
}
结果: