做简单网站需要学什么软件,大连制作网站报价,品牌策划方案ppt模板,沧州市做网站的使用EasyExcel导入Excel数据有两种方式 无论哪种方式我们都需要建立Excel表格和Java对象的绑定 首先我们需要根据Excel表头定义一个对应的类
excel表示例#xff1a; 对应的类#xff1a;
使用ExcelProperty将excel列名和字段名绑定#xff0c;括号里面填列名
package co…使用EasyExcel导入Excel数据有两种方式 无论哪种方式我们都需要建立Excel表格和Java对象的绑定 首先我们需要根据Excel表头定义一个对应的类
excel表示例 对应的类
使用ExcelProperty将excel列名和字段名绑定括号里面填列名
package com.hjm.yupao.once;import com.alibaba.excel.annotation.ExcelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;import java.util.Date;/*** 用户信息*/
Data
public class UserInfo {/*** 星球编号*/ExcelProperty(成员编号)private String planetCode;/*** 用户昵称*/ExcelProperty(成员昵称)private String username;ExcelProperty(成员积分)private Double score;
}第一种监听器
先创建一个监听器在读取数据时绑定监听器
监听器
package com.hjm.yupao.once;import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.read.listener.ReadListener;
import lombok.extern.slf4j.Slf4j;// 有个很重要的点 UserInfoListener 不能被spring管理要每次读取excel都要new,然后里面用到spring可以构造方法传进去
Slf4j
public class TableListener implements ReadListenerUserInfo {/*** 这个每一条数据解析都会来调用** param data one row value. Is is same as {link AnalysisContext#readRowHolder()}* param context*/Overridepublic void invoke(UserInfo data, AnalysisContext context) {System.out.println(data);}/*** 所有数据解析完成了 都会来调用** param context*/Overridepublic void doAfterAllAnalysed(AnalysisContext context) {// 这里也要保存数据确保最后遗留的数据也存储到数据库System.out.println(已解析完成);}
}/*** 第一种方式使用监听器* param fileName*/private static void readByListener(String fileName) {// 这里默认每次会读取100条数据 然后返回过来 直接调用使用数据就行// 具体需要返回多少行可以在PageReadListener的构造函数设置EasyExcel.read(fileName, UserInfo.class, new TableListener()).sheet().doRead();}特点
单独抽离处理逻辑代码清晰易于维护一条一条处理适用于数据量大的场景
第二种同步的返回 /*** 第二种方式同步的返回不推荐使用如果数据量大会把数据放到内存里面* param fileName*/public static void synchronousRead(String fileName) {// 这里 需要指定读用哪个class去读然后读取第一个sheet 同步读取会自动finishListUserInfo TotalDataList EasyExcel.read(fileName).head(UserInfo.class).sheet().doReadSync();for (UserInfo data : TotalDataList) {System.out.println(data);}}特点
无需创建监听器一次性获取完整数据方便简单但是数据量大时会有等待时长也可能内存溢出
运行结果