Browse Source

🐛 buildHead 应在 readListener 的 invokeHead 全部执行完成后执行

pull/2795/head
Hccake 2 years ago
parent
commit
4e916b8403
  1. 11
      easyexcel-core/src/main/java/com/alibaba/excel/read/processor/DefaultAnalysisEventProcessor.java

11
easyexcel-core/src/main/java/com/alibaba/excel/read/processor/DefaultAnalysisEventProcessor.java

@ -88,11 +88,7 @@ public class DefaultAnalysisEventProcessor implements AnalysisEventProcessor {
boolean isData = rowIndex >= currentHeadRowNumber; boolean isData = rowIndex >= currentHeadRowNumber;
// Last head column // invoke data or invoke head
if (!isData && currentHeadRowNumber == rowIndex + 1) {
buildHead(analysisContext, cellDataMap);
}
// Now is data
for (ReadListener readListener : analysisContext.currentReadHolder().readListenerList()) { for (ReadListener readListener : analysisContext.currentReadHolder().readListenerList()) {
try { try {
if (isData) { if (isData) {
@ -108,6 +104,11 @@ public class DefaultAnalysisEventProcessor implements AnalysisEventProcessor {
throw new ExcelAnalysisStopException(); throw new ExcelAnalysisStopException();
} }
} }
// Last head column
if (!isData && currentHeadRowNumber == rowIndex + 1) {
buildHead(analysisContext, cellDataMap);
}
} }
private void buildHead(AnalysisContext analysisContext, Map<Integer, ReadCellData<?>> cellDataMap) { private void buildHead(AnalysisContext analysisContext, Map<Integer, ReadCellData<?>> cellDataMap) {

Loading…
Cancel
Save