mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-04-19 03:01:48 +08:00
!155 RowHandler增加一个sheet页处理完成的回调函数
Merge pull request !155 from L柚咲/v5-dev
This commit is contained in:
commit
2f64b3b85d
@ -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
|
||||||
*
|
*
|
||||||
|
@ -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) {
|
||||||
|
@ -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
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user