import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.analysis.AnalysisEventListener;
import com.alibaba.excel.context.AnalysisContext;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
public class ExcelReader {
public static void readExcelWithDynamicHeader(InputStream inputStream) {
// 注册监听器,用于处理读取到的数据
AnalysisEventListener<List<String>> listener = new AnalysisEventListener<List<String>>() {
@Override
public void invoke(List<String> data, AnalysisContext context) {
// data即为读取到的当前行的数据,List<String>形式
System.out.println(data);
}
@Override
public void doAfterAllAnalysed(AnalysisContext context) {
// 所有数据读取完成后执行的逻辑,可以在这里关闭流等操作
}
};
// 读取Excel文件,sheet索引从0开始
EasyExcel.read(inputStream)
.sheet()
.headRowNumber(1) // 指定标题行,如果第一行是数据则设置为0
.registerReadListener(listener)
.doRead();
}
public static void main(String[] args) {
// 假设你已经获取了文件的InputStream
InputStream inputStream = ...; // 从文件或其他来源获取InputStream
readExcelWithDynamicHeader(inputStream);
}
}