建议先去看文档
读多个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。
1条答案
按热度按时间bihw5rsg1#
我现在是手动调用 ReadSheet 的 setHeadRowNumber 方法设置的Head行数。没法通过class从注解中获取比较麻烦。