您的位置:首页 > 财经 > 产业 > 微商城怎么推广_海口自助建站_seo做得比较好的企业案例_百度怎么搜索网址打开网页

微商城怎么推广_海口自助建站_seo做得比较好的企业案例_百度怎么搜索网址打开网页

2025/3/16 6:25:32 来源:https://blog.csdn.net/LCY133/article/details/146168117  浏览:    关键词:微商城怎么推广_海口自助建站_seo做得比较好的企业案例_百度怎么搜索网址打开网页
微商城怎么推广_海口自助建站_seo做得比较好的企业案例_百度怎么搜索网址打开网页

核心方法的执行顺序和规则

1. invokeHead(可选)

触发条件:解析到 Excel 的表头行(第一行)。
用途:获取表头数据(例如动态列名)。
示例

override fun invokeHead(headMap: Map<Int, String>, context: AnalysisContext) {println("表头数据: $headMap")
}
2. invoke

触发条件:每解析成功一行数据后触发。
用途:处理单行数据(例如保存到数据库)。
注意:此方法必须实现。
示例

override fun invoke(user: User, context:AnalysisContext) {println("处理数据: $user")
}
3. doAfterAllAnalysed

触发条件:整个 Sheet 解析完成后触发。
用途:收尾操作(例如关闭资源、提交事务)。
注意:此方法在 EasyExcel 3.3+ 中默认空实现,需手动覆盖。
示例

override fun doAfterAllAnalysed(context:AnalysisContext) {println("所有数据解析完成")
}
4. onException

触发条件:解析过程中发生异常时触发(例如数据类型不匹配)。
用途:自定义异常处理逻辑(例如记录错误日志)。
注意:如果不覆盖此方法,默认会抛出异常并终止解析。
示例

override fun onException(exception: Exception, context:AnalysisContext) {println("解析异常: ${exception.message}")throw exception // 可选择终止或忽略
}

完整的执行流程图

以下是解析一个 3 行数据(含表头)的 Excel 时的典型流程:

EasyExcel.read(inputStream, User::class.java, listener).sheet().doRead()

流程步骤:

  1. invokeHead → 解析表头(如果覆盖了该方法)。
  2. invoke → 解析第一行数据。
  3. invoke → 解析第二行数据。
  4. invoke → 解析第三行数据。
  5. doAfterAllAnalysed → 整个 Sheet 解析完成。
  6. onException → 如果中间某行解析失败,会直接跳转到这里。

高级场景:异常处理逻辑

如果某行数据解析失败(例如字段类型不匹配):

  1. onException 被触发,处理异常。
  2. doAfterAllAnalysed 仍然会被调用(即使中途出错)。
  3. 后续行解析终止(默认行为,可通过 context.interrupt() 显式控制)。

Kotlin 代码实战示例

监听器完整实现
class UserDataListener : ReadListener<User> {override fun invokeHead(headMap: Map<Int, String>, context: AnalysisContext) {println("表头: ${headMap.values}")}override fun invoke(user: User, context: AnalysisContext) {println("处理数据: $user")// 业务逻辑:保存到数据库等}override fun doAfterAllAnalysed(context: AnalysisContext) {println("解析完成,释放资源")}override fun onException(exception: Exception, context: AnalysisContext) {println("第 ${context.readRowHolder().rowIndex} 行解析失败: ${exception.message}")// 继续解析后续行(不抛出异常)// context.interrupt() // 强制终止解析}
}
控制解析行为

终止解析:在 onException 中调用 context.interrupt()
忽略错误继续解析:在 onException 中不抛出异常。


性能优化建议

  1. 批量处理:在 invoke 中不要逐条操作数据库,改为批量提交。
  2. 内存控制:通过 ReadCache 管理缓存数据(默认 100 条)。
  3. 异步处理:在 invoke 中将数据发送到队列,由后台线程处理。

通过以上规则,你可以精准控制 Excel 解析的生命周期,确保数据处理的可靠性和高性能。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com