close
Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package cn.idev.excel.test.demo.read;

import lombok.EqualsAndHashCode;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

@Getter
@Setter
@EqualsAndHashCode
@ToString
public class DemoDataAnother {
private String strA;
private String strB;
private String strC;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package cn.idev.excel.test.demo.read;

import cn.idev.excel.context.AnalysisContext;
import cn.idev.excel.read.listener.ReadListener;
import lombok.extern.slf4j.Slf4j;

/**
* 针对通过泛型指定头部类型的数据监听器样例
* @param <T>
*/
@Slf4j
public class GenericHeaderTypeDataListener<T> implements ReadListener<T> {

private final Class<T> headerClass;

private GenericHeaderTypeDataListener(Class<T> headerClass) {
this.headerClass = headerClass;
}


@Override
public void invoke(T data, AnalysisContext context) {
log.info("data:{}", data);
// 执行业务逻辑
}

@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 执行收尾工作
}

public static <T> GenericHeaderTypeDataListener<T> build(Class<T> excelHeaderClass) {
return new GenericHeaderTypeDataListener<>(excelHeaderClass);
}

public Class<T> getHeaderClass() {
return headerClass;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,14 @@ private void saveData() {
}
}

@Test
public void genericHeaderTypeRead() {
String fileName = TestFileUtil.getPath() + "demo" + File.separator + "generic-demo.xlsx";
// 模拟通过任何可能的方式获取到的excel头对应的Class<?>对象
Class<?> excelHeaderClass = DemoDataAnother.class;
EasyExcel.read(fileName, excelHeaderClass, GenericHeaderTypeDataListener.build(excelHeaderClass)).sheet().doRead();
}

/**
* 指定列的下标或者列名
*
Expand Down
Binary file not shown.