easyexcel 读多个Sheet,Head行数错误

dohp0rv5  于 4个月前  发布在  其他
关注(0)|答案(1)|浏览(40)

建议先去看文档

读多个sheet

触发场景描述

两个Sheet,表头不一样,设置的head不起作用。

触发Bug的代码

代码参照文档,当先构建ExcelReader时,创建XlsxReadWorkbookHolder对象,调用父类AbstractReadHolder构造函数时,readBasicParameter参数为ReadWorkbook,parentAbstractReadHolder参数为null。此时由于Head在ReadSheet中,所以headRowNumber=1。(第72行)
当构建ReadSheet时,创建XlsxReadSheetHolder对象,调用父类AbstractReadHolder构造函数时,readBasicParameter参数为ReadSheet,parentAbstractReadHolder参数为XlsxReadWorkbookHolder对象,结果优先从parentAbstractReadHolder中获取,始终无法从ReadSheet中获取。(第75行)

easyexcel/easyexcel-core/src/main/java/com/alibaba/excel/read/metadata/holder/AbstractReadHolder.java

Lines 65 to 80 in 0d353fe

| | // Initialization property |
| | this.excelReadHeadProperty = newExcelReadHeadProperty(this, getClazz(), getHead()); |
| | if (readBasicParameter.getHeadRowNumber() == null) { |
| | if (parentAbstractReadHolder == null) { |
| | if (excelReadHeadProperty.hasHead()) { |
| | this.headRowNumber = excelReadHeadProperty.getHeadRowNumber(); |
| | } else { |
| | this.headRowNumber = 1; |
| | } |
| | } else { |
| | this.headRowNumber = parentAbstractReadHolder.getHeadRowNumber(); |
| | } |
| | } else { |
| | this.headRowNumber = readBasicParameter.getHeadRowNumber(); |
| | } |
| | |

提示的异常或者没有达到的效果

无法获取每个Sheet真正的Head行数,总是默认的1。

bihw5rsg

bihw5rsg1#

我现在是手动调用 ReadSheet 的 setHeadRowNumber 方法设置的Head行数。没法通过class从注解中获取比较麻烦。

相关问题