使用EasyExcel文件解析
准备工作:
导入相关alibabaeasyexcel相关jar包:
准备Data实体类:
import java.util.Date;
import com.alibaba.excel.annotation.ExcelIgnore;
import com.alibaba.excel.annotation.ExcelProperty;
public class Data {
@ExcelProperty("订单号")
private String orderId;
@ExcelProperty("用户id")
private String uuid;
// @ExcelIgnore
@ExcelProperty("下单时间")
private Date date;
public Data(String orderId, String uuid, Date date) {
super();
this.orderId = orderId;
this.uuid = uuid;
this.date = date;
}
public Data() {
super();
}
public String getOrderId() {
return orderId;
}
public void setOrderId(String orderId) {
this.orderId = orderId;
}
public String getUuid() {
return uuid;
}
public void setUuid(String uuid) {
this.uuid = uuid;
}
public Date getDate() {
return date;
}
public void setDate(Date date) {
this.date = date;
}
@Override
public String toString() {
return "Data [orderId=" + orderId + ", uuid=" + uuid + ", date=" + date + "]";
}
}
测试类:
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Map;
import java.util.UUID;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.alibaba.excel.metadata.CellData;
public class Alibabaeasyexcel {
public static void main(String[] args) {
write();
read();
}
private static void write() {
// 使用EasyExcel写出操作
// EasyExcel.write(写出的位置,格式类型)
// .sheet("表名")
// .doWrite(list)--写出数据方式
List<Data> list = new ArrayList<Data>();
for (int i = 0; i <= 1000000; i++) {
Data data = new Data();
data.setUuid(UUID.randomUUID().toString().substring(0, 6));
data.setOrderId(i + "");
data.setDate(new Date());
list.add(data);
}
EasyExcel.write("E:\\apesourcefile\\homework\\alibababig.xlsx", Data.class).sheet("表1").doWrite(list);
System.out.println("写出数据结束");
}
private static void read() {
// EasyExcle读取文件信息
// 参数1:文件路径
// 参数2:格式类型
// 参数3:读取到文件做的操作或者逻辑----监听器,判断
// EasyExcel.read(file,head,参数3)
// 读取表
// .sheet()
// 执行读的操作
// .doRead();
EasyExcel.read("E:\\apesourcefile\\homework\\alibababig.xlsx", Data.class, new AnalysisEventListener<Data>() {
// 读取完所有操作后做的事情
@Override
public void doAfterAllAnalysed(AnalysisContext arg0) {
System.out.println("读取结束");
}
// invoke方法读取到的数据要做的操作逻辑
@Override
public void invoke(Data arg0, AnalysisContext arg1) {
System.out.println(arg0);
}
@Override
public void invokeHead(Map<Integer, CellData> headMap, AnalysisContext context) {
System.out.println(headMap);
}
}).sheet().doRead();
}
}
运行结果:
先写再读取,使得excel先被写入数据,然后在控制台输出读取的结果: