Open Tomcat-8 opened 8 months ago
这个bug到现在没修复吗?遇到同样问题了
同样的问题,使用doFill()出现,更新至 4.0.2仍然存在,这是我的报错:
java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "com.alibaba.excel.write.handler.context.RowWriteHandlerContext.getRelativeRowIndex()" is null
at com.alibaba.excel.write.style.row.AbstractRowHeightStyleStrategy.afterRowDispose(AbstractRowHeightStyleStrategy.java:22)
触发场景描述
对应的调用报错栈 java.lang.NullPointerException at com.alibaba.excel.write.style.row.AbstractRowHeightStyleStrategy.afterRowDispose(AbstractRowHeightStyleStrategy.java:22) at com.alibaba.excel.write.handler.chain.RowHandlerExecutionChain.afterRowDispose(RowHandlerExecutionChain.java:47) at com.alibaba.excel.util.WriteHandlerUtils.afterRowDispose(WriteHandlerUtils.java:178) at com.alibaba.excel.write.executor.ExcelWriteFillExecutor.doFill(ExcelWriteFillExecutor.java:297) at com.alibaba.excel.write.executor.ExcelWriteFillExecutor.fill(ExcelWriteFillExecutor.java:130) at com.alibaba.excel.write.ExcelBuilderImpl.fill(ExcelBuilderImpl.java:82) at com.alibaba.excel.ExcelWriter.fill(ExcelWriter.java:110) at com.alibaba.excel.ExcelWriter.fill(ExcelWriter.java:98)
图示:
触发Bug的代码
个人想法
doFill(readTemplateData(templateAnalysisCache), realData, fillConfig, null);
RowWriteHandlerContext rowWriteHandlerContext = WriteHandlerUtils.createRowWriteHandlerContext(writeContext, null, relativeRowIndex, Boolean.FALSE);
并且其中的
relativeRowIndex
和head
属性都是上下文固定传入的,在AbstractRowHeightStyleStrategy
类中的方法setHeadColumnHeight
和setContentColumnHeight
if (context.getHead()) { setHeadColumnHeight(context.getRow(), context.getRelativeRowIndex()); } else { setContentColumnHeight(context.getRow(), context.getRelativeRowIndex()); }
用的是基类int接收参数null是不允许的。
考虑是否能换成包装类型接收,若有不能空的逻辑则再做判空处理。