6
建议先去看文档
异常代码
class YourListener(
// key: sheet name ;value: list of field name
val headNames: LinkedHashMap<String, List<String>>,
) : AnalysisEventListener<Map<Int, String>?>() {
private val dataList = ArrayList<Map<Int, String>?>()
companion object {
private val logger: Logger = LoggerFactory.getLogger(YourListener::class.java)
}
override fun doAfterAllAnalysed(context: AnalysisContext?) {
logger.info("doAfterAllAnalysed...")
}
override fun invoke(data: Map<Int, String>?, context: AnalysisContext?) {
if (dataList.size < EXCEL_READ_ROW_NUM) {
return
}
dataList.add(data)
logger.info("条数:${dataList.size}")
}
// 解析表头
override fun invokeHeadMap(headMap: MutableMap<Int, String>?, context: AnalysisContext?) {
// 当前sheet页名
val currentSheetName = context?.readSheetHolder()?.sheetName
println(currentSheetName)
if (!currentSheetName.isNullOrBlank()) {
headNames[currentSheetName] = headMap?.values?.toList() ?: emptyList()
}
}
}
异常提示
问题描述
版本:easyexcel:3.3.1 问题:当重写hasNext()后,doReadAll失效 需求:读取每个sheet页的前n行, 详细:一开始使用的是【invoke()方法增加判断后返回return】但发现有性能问题;该用【重写hasNext】的方式后发现无法读取下一个sheet页,即listener中的回调方法只执行了一次