一、基础类描述
- ExcelImport(导入工具类)
- ExcelRow(导入实体类)
- Consumer(函数参数)
二、代码
1、ExcelImport
import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import org.itxl.common.utils.Consumer;
import java.util.ArrayList;
import java.util.List;
public abstract class ExcelImport extends AnalysisEventListener<ExcelRow> implements Consumer<Void> {
private int startRow = 1;
private final static int ONE_EXECUTE_LIST_SIZE = 1000;
private final List<ExcelRow> data = new ArrayList<>();
public ExcelImport(int startRow){
if (startRow < 1){
}
this.startRow = startRow;
}
public ExcelImport(){
}
@Override
public void invoke(ExcelRow excelRow, AnalysisContext analysisContext) {
if (analysisContext.readRowHolder().getRowIndex() < startRow){
return;
}
data.add(excelRow);
if (data.size() >= ONE_EXECUTE_LIST_SIZE){
accept();
data.clear();
}
}
@Override
public void doAfterAllAnalysed(AnalysisContext analysisContext) {
accept();
data.clear();
}
@Override
public Void accept() {
return andThen();
}
}
2、ExcelRow
import lombok.Data;
@Data
public class ExcelRow {
private String col1;
private String col2;
private String col3;
private String col4;
private String col5;
private String col6;
private String col7;
private String col8;
private String col9;
private String col10;
private String col11;
private String col12;
private String col13;
private String col14;
private String col15;
private String col16;
private String col17;
private String col18;
private String col19;
private String col20;
private String col21;
private String col22;
private String col23;
private String col24;
private String col25;
private String col26;
private String col27;
private String col28;
private String col29;
private String col30;
private String col31;
private String col32;
private String col33;
private String col34;
private String col35;
private String col36;
private String col37;
private String col38;
private String col39;
private String col40;
private String col41;
private String col42;
private String col43;
private String col44;
private String col45;
private String col46;
private String col47;
private String col48;
private String col49;
private String col50;
private String col51;
private String col52;
private String col53;
private String col54;
private String col55;
private String col56;
private String col57;
private String col58;
private String col59;
private String col60;
private String col61;
private String col62;
private String col63;
private String col64;
private String col65;
private String col66;
private String col67;
private String col68;
private String col69;
private String col70;
private String col71;
private String col72;
private String col73;
private String col74;
private String col75;
private String col76;
private String col77;
private String col78;
private String col79;
private String col80;
private String col81;
private String col82;
private String col83;
private String col84;
private String col85;
private String col86;
private String col87;
private String col88;
private String col89;
private String col90;
private String col91;
private String col92;
private String col93;
private String col94;
private String col95;
private String col96;
private String col97;
private String col98;
private String col99;
private String col100;
}
3、Consumer
public interface Consumer<T>{
T andThen();
T accept();
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类