chensongbiao

博客园 首页 新随笔 联系 订阅 管理
  3 随笔 :: 0 文章 :: 0 评论 :: 154 阅读

示例代码:

 

代码EasyExcel.read(fileName, new NoModelDataListener()).sheet().doRead()会不断调用invoke方法去读取excel的每一行数据,当行数据大于等于BATCH_COUNT时就会调用saveData方法来保存数据,当读完excel所有行时会调用doAfterAllAnalysed方法。

invoke方法中的Map<Integer, String> data 参数是传递给 invoke 方法的参数,它代表了从Excel文件中解析出的一行数据。

AnalysisContext context 是一个传递给 invoke 方法和 doAfterAllAnalysed 方法的参数。这个参数通常用来表示分析(解析)上下文,它包含了当前解析操作的各种信息和状态。

具体来说,AnalysisContext 可能包含以下内容:

  1. 当前解析的状态:例如是否正在解析、解析是否完成等。
  2. 解析配置:比如读取的Excel文件的路径、使用的解析规则或配置等。
  3. 读取进度:包括已经读取了多少行数据,当前读取到了哪一行等。
  4. 其他可能对解析过程有用的元数据。

EasyExcel.read(fileName, new NoModelDataListener()).sheet().doRead()中的

  • .sheet(): 这个方法返回一个 SheetReader 对象,并指定要读取的工作表(sheet)。如果没有明确指定工作表的索引或名称,默认会读取第一个工作表。你可以通过传递参数来选择特定的工作表,例如 .sheet(1) 读取第二个工作表,或者 .sheet("SheetName") 按名称读取工作表。

  • .doRead(): 最后,这个方法启动实际的读取过程。它会遍历选定的工作表中的所有数据行,并调用监听器的 invoke 方法将每行数据传递给监听器进行处理。当所有的数据都被解析完毕后,还会调用监听器的 doAfterAllAnalysed 方法。

因此,.sheet().doRead() 的组合表示“开始读取默认的第一个工作表的所有数据”。这是一次同步的操作,意味着调用线程会等待直到所有的数据都被读取和处理完毕。

补充一点:.headRowNumber(8): 这个方法指定了标题行所在的行号(基于0索引)。这意味着Excel文件中的第9行(因为是从0开始计数的)将被视为标题行。所有在此行之上的行都会被忽略,而从此行开始的数据会被认为是有效数据行。

posted on   爱吃大肉包子  阅读(44)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示