目标excel文件内容如下
由于A列的“Y00001”和C列的数据是B4,B5,B6共用的数据项,我理想中的情况是easyexcel在做读取操作时,在读取三行数据时都会把A列和C列的数据给读出来。但是在读取的时候,只有第一次读取能把A、C列的数据读取出来,后面两次读取A、C列的值为空。目前没有从根本上找到原因,那就只能从程序的设计上去解决这个问题了。
通过EasyExcel读取目标文件
EasyExcel.read("D:\\Users\\admin\\Documents\\Tencent Files\\1430424583\\FileRecv\\demo.xls", new FaguiSheet()).sheet().doRead();
解决思路,如果A、C列值找不到了的话,就判定这是个跨行数据,就复用之前读取的数据,需要用一个Map集合去存储之前读取的有效数据。
ReadListener实现类
class FaguiSheet extends AnalysisEventListener> {
// 所有要插入的数据
private List datas = new ArrayList<>();
// 缓存上一次跨行数据的有效数据
private Map preContent;
@Override
public void invoke(Map o, AnalysisContext analysisContext) {
DemoModel model = new DemoModel();