easyexcel
easyexcel copied to clipboard
Cannot invoke "com.alibaba.excel.read.metadata.holder.xls.XlsReadSheetHolder.setRowIndex(java.lang.Integer)" because "xlsReadSheetHolder" is null
异常代码
@Override
public void processRecord(XlsReadContext xlsReadContext, Record record) {
XlsReadSheetHolder xlsReadSheetHolder = xlsReadContext.xlsReadSheetHolder();
if (record instanceof LastCellOfRowDummyRecord) {
// End of this row
LastCellOfRowDummyRecord lcrdr = (LastCellOfRowDummyRecord)record;
xlsReadSheetHolder.setRowIndex(lcrdr.getRow());//!!!!!!!!!!!!!!!!!!!!!!!!!!!here!!!!!!!!!!!!!!!!!!!!!!!!!!!!
xlsReadContext.readRowHolder(new ReadRowHolder(lcrdr.getRow(), xlsReadSheetHolder.getTempRowType(),
xlsReadContext.readSheetHolder().getGlobalConfiguration(), xlsReadSheetHolder.getCellMap()));
xlsReadContext.analysisEventProcessor().endRow(xlsReadContext);
xlsReadSheetHolder.setCellMap(new LinkedHashMap<Integer, Cell>());
xlsReadSheetHolder.setTempRowType(RowTypeEnum.EMPTY);
} else if (record instanceof MissingCellDummyRecord) {
MissingCellDummyRecord mcdr = (MissingCellDummyRecord)record;
xlsReadSheetHolder.getCellMap().put(mcdr.getColumn(),
ReadCellData.newEmptyInstance(mcdr.getRow(), mcdr.getColumn()));
}
}
}
**异常提示**
java.lang.NullPointerException: Cannot invoke "com.alibaba.excel.read.metadata.holder.xls.XlsReadSheetHolder.setRowIndex(java.lang.Integer)" because "xlsReadSheetHolder" is null
at com.alibaba.excel.analysis.v03.handlers.DummyRecordHandler.processRecord(DummyRecordHandler.java:29)
at com.alibaba.excel.analysis.v03.XlsSaxAnalyser.processRecord(XlsSaxAnalyser.java:158)
at org.apache.poi.hssf.eventusermodel.MissingRecordAwareHSSFListener.processRecord(MissingRecordAwareHSSFListener.java:156)
at org.apache.poi.hssf.eventusermodel.FormatTrackingHSSFListener.processRecord(FormatTrackingHSSFListener.java:92)
at org.apache.poi.hssf.eventusermodel.HSSFRequest.processRecord(HSSFRequest.java:106)
at org.apache.poi.hssf.eventusermodel.HSSFEventFactory.genericProcessEvents(HSSFEventFactory.java:172)
at org.apache.poi.hssf.eventusermodel.HSSFEventFactory.processEvents(HSSFEventFactory.java:129)
at org.apache.poi.hssf.eventusermodel.HSSFEventFactory.processWorkbookEvents(HSSFEventFactory.java:80)
at org.apache.poi.hssf.eventusermodel.HSSFEventFactory.processWorkbookEvents(HSSFEventFactory.java:53)
at com.alibaba.excel.analysis.v03.XlsSaxAnalyser.execute(XlsSaxAnalyser.java:137)
at com.alibaba.excel.analysis.ExcelAnalyserImpl.analysis(ExcelAnalyserImpl.java:123)
at com.alibaba.excel.ExcelReader.read(ExcelReader.java:67)
............
java.lang.RuntimeException: Cannot invoke "com.alibaba.excel.read.metadata.holder.xls.XlsReadSheetHolder.setRowIndex(java.lang.Integer)" because "xlsReadSheetHolder" is null
.............
这里写你的代码
protected void readSheetList(ExcelReader excelReader, AbstractExcelCommonListener listener) {
List<ReadSheet> readSheetList = new ArrayList<>();
for (int x = 0; x < listener.getSheetSize(); x++) {
ReadSheet readSheet = EasyExcel.readSheet(x).build();
readSheetList.add(readSheet);
}
excelReader.read(readSheetList);
}
建议描述 其他xls正常这个excel会出现这个问题 https://github.com/oswardlx/temp/blob/main/CmsAtWKwOrWAO91JALYyAL2JPWk771.xls