RowHandler增加一个sheet页处理完成的回调函数

This commit is contained in:
ludengke 2020-08-14 09:26:48 +08:00
commit 1858eea7e8
3 changed files with 19 additions and 12 deletions

View File

@ -14,18 +14,7 @@ import org.apache.poi.hssf.eventusermodel.MissingRecordAwareHSSFListener;
import org.apache.poi.hssf.eventusermodel.dummyrecord.LastCellOfRowDummyRecord;
import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord;
import org.apache.poi.hssf.model.HSSFFormulaParser;
import org.apache.poi.hssf.record.BOFRecord;
import org.apache.poi.hssf.record.BlankRecord;
import org.apache.poi.hssf.record.BoolErrRecord;
import org.apache.poi.hssf.record.BoundSheetRecord;
import org.apache.poi.hssf.record.CellValueRecordInterface;
import org.apache.poi.hssf.record.FormulaRecord;
import org.apache.poi.hssf.record.LabelRecord;
import org.apache.poi.hssf.record.LabelSSTRecord;
import org.apache.poi.hssf.record.NumberRecord;
import org.apache.poi.hssf.record.Record;
import org.apache.poi.hssf.record.SSTRecord;
import org.apache.poi.hssf.record.StringRecord;
import org.apache.poi.hssf.record.*;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
@ -190,6 +179,8 @@ public class Excel03SaxReader extends AbstractExcelSaxReader<Excel03SaxReader> i
}
curRid++;
}
} else if (record instanceof EOFRecord){
processLastCellSheet();
} else if (isProcessCurrentSheet()) {
if (record instanceof MissingCellDummyRecord) {
// 空值的操作
@ -339,6 +330,13 @@ public class Excel03SaxReader extends AbstractExcelSaxReader<Excel03SaxReader> i
this.rowCellList = new ArrayList<>(this.rowCellList.size());
}
/**
* 处理sheet结束后的操作
*/
private void processLastCellSheet(){
this.rowHandler.doAfterAllAnalysed();
}
/**
* 是否处理当前sheet
*

View File

@ -137,6 +137,7 @@ public class Excel07SaxReader extends AbstractExcelSaxReader<Excel07SaxReader> i
// 根据 rId# rSheet# 查找sheet
sheetInputStream = xssfReader.getSheet(RID_PREFIX + (rid + 1));
ExcelSaxUtil.readFrom(sheetInputStream, this);
rowHandler.doAfterAllAnalysed();
} else {
this.sheetIndex = -1;
// 遍历所有sheet
@ -147,6 +148,7 @@ public class Excel07SaxReader extends AbstractExcelSaxReader<Excel07SaxReader> i
this.sheetIndex++;
sheetInputStream = sheetInputStreams.next();
ExcelSaxUtil.readFrom(sheetInputStream, this);
rowHandler.doAfterAllAnalysed();
}
}
} catch (RuntimeException e) {

View File

@ -31,4 +31,11 @@ public interface RowHandler {
* @param rowList 行数据列表
*/
void handle(int sheetIndex, long rowIndex, List<Object> rowList);
/**
* 处理一个sheet页完成的操作
*/
default void doAfterAllAnalysed(){
//pass
}
}