Excel工具-HUTOOL-读取Excel

简介: Hutool提供ExcelReader封装,支持读取Excel为Map、Bean或列表。针对大文件,提供Excel03SaxReader和Excel07SaxReader,基于SAX模式避免内存溢出,支持按行处理数据,适用于大数据量的高效读取。

依赖
ExcelReader
介绍
读取Excel内容的封装,通过构造ExcelReader对象,指定被读取的Excel文件、流或工作簿,然后调用readXXX方法读取内容为指定格式。
使用
读取Excel中所有行和列,都用列表表示
读取为Map列表,默认第一行为标题行,Map中的key为标题,value为标题对应的单元格值。
即:第一行为key,之后的为value进行读取,此场景对第一行有要求,如使用示例1会有异常
读取为Bean列表,Bean中的字段名为标题,字段值为标题对应的单元格值。
流方式读取Excel2003-Excel03SaxReader
在标准的ExcelReader中,如果数据量较大,读取Excel会非常缓慢,并有可能造成内存溢出。因此针对大数据量的Excel,Hutool封装了event模式的读取方式。Excel03SaxReader只支持Excel2003格式的Sax读取。
使用
reader方法的第二个参数是sheet的序号,-1表示读取所有sheet,0表示第一个sheet,依此类推。
定义行处理器
首先我们实现一下RowHandler接口,这个接口是Sax读取的核心,通过实现handle方法编写我们要对每行数据的操作方式(比如按照行入库,入List或者写出到文件等),在此我们只是在控制台打印。
ExcelUtil快速读取
构建对象读取
流方式读取Excel2007-Excel07SaxReader
介绍
在标准的ExcelReader中,如果数据量较大,读取Excel会非常缓慢,并有可能造成内存溢出。因此针对大数据量的Excel,Hutool封装了Sax模式的读取方式。Excel07SaxReader只支持Excel2007格式的Sax读取。
使用
reader方法的第二个参数是sheet的序号,-1表示读取所有sheet,0表示第一个sheet,依此类推。
定义行处理器
首先我们实现一下RowHandler接口,这个接口是Sax读取的核心,通过实现handle方法编写我们要对每行数据的操作方式(比如按照行入库,入List或者写出到文件等),在此我们只是在控制台打印。
Plain Text
复制代码
1
2
3
4
5
6
7
8
private RowHandler createRowHandler() {
return new RowHandler() {
@Override
public void handle(int sheetIndex, long rowIndex, List rowlist) {
Console.log("[{}] [{}] {}", sheetIndex, rowIndex, rowlist);
}
};
}Copy to clipboardErrorCopied
ExcelUtil快速读取
Plain Text
复制代码
1
ExcelUtil.read07BySax("aaa.xlsx", 0, createRowHandler());Copy to clipboardErrorCopied
构建对象读取
Plain Text
复制代码
1
2
Excel07SaxReader reader = new Excel07SaxReader(createRowHandler());
reader.read("d:/text.xlsx", 0);Copy to clipboardErrorCopied

相关文章
|
开发工具 git
iterm2 oh-my-zsh 自动提示命令
iterm2 oh-my-zsh 自动提示命令
iterm2 oh-my-zsh 自动提示命令
|
8月前
|
Dubbo 数据可视化 Java
整合SpringBoot、Dubbo与Nacos:一个快速入门教程
经过上述步骤,消费者模块成功引用了生产者提供的服务,并通过Spring Web将服务映射到了特定的URL路径上。消费者模块成功地调用并展示了生产者提供的数据,并在不移除特定依赖项的情况下确保了系统的正常运行。
|
Java API 开发者
微服务——SpringBoot使用归纳——Spring Boot使用slf4j进行日志记录——slf4j 介绍
在软件开发中,`System.out.println()`常被用于打印信息,但大量使用会增加资源消耗。实际项目推荐使用slf4j结合logback输出日志,效率更高。Slf4j(Simple Logging Facade for Java)是一个日志门面,允许开发者通过统一方式记录日志,无需关心具体日志系统。它支持灵活切换日志实现(如log4j或logback),且具备简洁占位符和日志级别判断等优势。阿里巴巴《Java开发手册》强制要求使用slf4j,以保证日志处理方式的统一性和维护性。使用时只需通过`LoggerFactory`创建日志实例即可。
783 0
|
11月前
|
传感器 边缘计算 云计算
边缘计算:数字世界的”末梢神经系统”解析-优雅草卓伊凡
边缘计算:数字世界的”末梢神经系统”解析-优雅草卓伊凡
817 32
边缘计算:数字世界的”末梢神经系统”解析-优雅草卓伊凡
|
SQL Arthas 缓存
使用篇丨链路追踪(Tracing)其实很简单:请求轨迹回溯与多维链路筛选
本章我们将以业务 Owner(小帅)的视角,逐步了解分布式链路追踪的各种基础用法:小到单次用户请求的异常根因诊断,大到全局系统的强弱依赖梳理,分布式链路追踪都能给予确定性答案。
20532 90
使用篇丨链路追踪(Tracing)其实很简单:请求轨迹回溯与多维链路筛选
|
10月前
|
人工智能 文字识别 小程序
告别手动录入!AI自动识别发票
最近有朋友向我吐槽:"每天对着几十张发票手动录入系统,眼睛都快看花了,还总担心数字打错。" 这种重复性高、容错率低的工作,确实让财务和行政人员苦不堪言。作为程序员,我深知这类场景完全可以通过技术手段优化
755 1
|
前端开发 JavaScript API
React 文件下载组件:File Download
本文详细介绍了如何在React应用中实现文件下载组件,包括基本概念、实现步骤和代码示例。同时,探讨了常见问题如文件类型不匹配、文件名乱码等及其解决方法,旨在提升用户体验和代码可维护性。
895 2
|
SQL 前端开发 关系型数据库
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
芋道框架万字详解(前后端分离)、若依框架、yudao-cloud保姆级攻略
22502 7
Excel工具-HUTOOL-读取Excel
Excel工具-HUTOOL-读取Excel
2182 0
|
iOS开发
iOS16.1系统由于一个系统弹窗无法取消,导致屏幕卡死无法关机问题及解决方案
iOS16.1系统由于一个系统弹窗无法取消,导致屏幕卡死无法关机问题及解决方案
2322 0