easyexcel icon indicating copy to clipboard operation
easyexcel copied to clipboard

Cannot invoke "com.alibaba.excel.read.metadata.holder.xls.XlsReadSheetHolder.setRowIndex(java.lang.Integer)" because "xlsReadSheetHolder" is null

Open oswardlx opened this issue 3 years ago • 0 comments

异常代码

    @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

oswardlx avatar Jun 22 '22 02:06 oswardlx