Excel工具-HUTOOL-读取Excel

简介: Hutool的ExcelReader封装了Excel读取操作,支持读取为Map、Bean或列表,适用于大文件的SAX模式避免内存溢出。提供Excel03SaxReader和Excel07SaxReader分别处理2003/2007格式,通过RowHandler实现行级处理,支持按Sheet读取,可高效解析海量数据。

依赖
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

相关文章
|
19小时前
|
Java Spring
Activiti工程分享
本系列包含Activiti入门教程Demo与完整审批流程源码,助你快速掌握工作流引擎开发。项目基于Spring Boot集成Activiti,涵盖流程部署、启动、任务处理等核心功能,适合企业级应用开发学习。
|
19小时前
|
数据可视化 数据挖掘
参考简历模板
三张图片展示了数据可视化图表,包括柱状图、折线图与饼图,用于直观呈现各类数据趋势与比例分布,适用于数据分析、报告展示等场景,助力快速洞察关键信息,以上内容都为参考简历模板。
|
19小时前
|
人工智能 Serverless API
一键部署Stable Diffusion教程
本实验指导用户通过函数计算控制台部署AI绘画应用Stable Diffusion,可领用免费额度或购买新/老客户套餐包。部署前需授权并选择地域与绘图类型,使用默认设置完成创建。注意后付费费用及镜像加速状态,待部署成功后访问域名即可进入WebUI界面生成图像。
|
19小时前
|
安全 Java 网络安全
HTTP工具
该代码实现了HTTP/HTTPS的GET、POST请求,支持自定义Header及参数传输。通过HttpClient发送请求,配置超时时间,并实现SSL安全连接忽略证书验证,确保通信稳定。适用于Java后端接口调用,具备良好异常处理与资源释放机制。
|
19小时前
|
Java 数据安全/隐私保护
脱敏工具
提供身份证、姓名、手机号的Java脱敏方法,通过正则替换实现敏感信息隐藏,保障数据安全,适用于隐私保护场景。
|
19小时前
随机ID
生成指定长度的随机字符串,支持纯数字或包含大小写字母与数字的组合,适用于验证码、随机ID等场景。
|
19小时前
|
存储 安全 Java
StringUtil
本文探讨Java中超长字符串的接收与处理方案。由于String最大长度受限于int类型及常量池限制,无法直接通过字面量接收超长字符串。针对该问题,提出使用StringBuilder分段处理,将长字符串按65534长度分组拼接,避免“常量字符串过长”错误,实现高效安全的字符串构建。(238字)
|
19小时前
|
安全 Java
IOUtil
本文介绍了Java中三种常见文件操作:读取文件全部内容、向文件追加内容及递归遍历目录下所有文件。强调所有IO操作必须在finally块中手动关闭资源,确保程序稳定与资源释放安全。
|
19小时前
|
Java
common-lang3
避免三目运算符引发的Java自动拆装箱异常,推荐使用ObjectUtils.defaultIfNull方法替代。如:ObjectUtils.defaultIfNull(map2.get("test"), true),可有效防止null值导致的NullPointerException,提升代码安全性与可读性。(238字)
|
19小时前
|
jenkins Java 持续交付
SpringBoot集成Jenkins
本文介绍在阿里云CentOS系统上配置Jenkins持续集成环境的完整步骤,涵盖JDK、Jenkins安装与端口用户配置,解决启动权限及端口冲突问题;并指导手动指定JDK路径、安装Git与Maven,配置阿里云镜像及环境变量,最后通过浏览器访问并完成插件初始化安装,实现高效自动化部署基础环境搭建。