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

Merge pull request !155 from L柚咲/v5-dev
This commit is contained in:
Looly 2020-08-16 09:16:19 +08:00 committed by Gitee
commit 2f64b3b85d
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.LastCellOfRowDummyRecord;
import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord; import org.apache.poi.hssf.eventusermodel.dummyrecord.MissingCellDummyRecord;
import org.apache.poi.hssf.model.HSSFFormulaParser; import org.apache.poi.hssf.model.HSSFFormulaParser;
import org.apache.poi.hssf.record.BOFRecord; import org.apache.poi.hssf.record.*;
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.usermodel.HSSFWorkbook; import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.apache.poi.poifs.filesystem.POIFSFileSystem; import org.apache.poi.poifs.filesystem.POIFSFileSystem;
@ -190,6 +179,8 @@ public class Excel03SaxReader extends AbstractExcelSaxReader<Excel03SaxReader> i
} }
curRid++; curRid++;
} }
} else if (record instanceof EOFRecord){
processLastCellSheet();
} else if (isProcessCurrentSheet()) { } else if (isProcessCurrentSheet()) {
if (record instanceof MissingCellDummyRecord) { if (record instanceof MissingCellDummyRecord) {
// 空值的操作 // 空值的操作
@ -339,6 +330,13 @@ public class Excel03SaxReader extends AbstractExcelSaxReader<Excel03SaxReader> i
this.rowCellList = new ArrayList<>(this.rowCellList.size()); this.rowCellList = new ArrayList<>(this.rowCellList.size());
} }
/**
* 处理sheet结束后的操作
*/
private void processLastCellSheet(){
this.rowHandler.doAfterAllAnalysed();
}
/** /**
* 是否处理当前sheet * 是否处理当前sheet
* *

View File

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

View File

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