Excel工具-HUTOOL-读取Excel

简介: Excel工具-HUTOOL-读取Excel

依赖  

<dependency>

 <groupId>cn.hutool</groupId>

 <artifactId>hutool-all</artifactId>

 <version>5.3.10</version>

</dependency>

<dependency>

 <groupId>org.apache.poi</groupId>

 <artifactId>poi-ooxml</artifactId>

 <version>4.1.2</version>

</dependency>

ExcelReader

介绍

读取Excel内容的封装,通过构造ExcelReader对象,指定被读取的Excel文件、流或工作簿,然后调用readXXX方法读取内容为指定格式。

使用

  1. 读取Excel中所有行和列,都用列表表示

ExcelReader reader = ExcelUtil.getReader("d:/aaa.xlsx");

List<List<Object>> readAll = reader.read();Copy to clipboardErrorCopied

image.png

image.png

  1. 读取为Map列表,默认第一行为标题行,Map中的key为标题,value为标题对应的单元格值。

即:第一行为key,之后的为value进行读取,此场景对第一行有要求,如使用示例1会有异常

ExcelReader reader = ExcelUtil.getReader("d:/aaa.xlsx");

List<Map<String,Object>> readAll = reader.readAll();Copy to clipboardErrorCopied

image.png

  1. 读取为Bean列表,Bean中的字段名为标题,字段值为标题对应的单元格值。

ExcelReader reader = ExcelUtil.getReader("d:/aaa.xlsx");

List<Person> all = reader.readAll(Person.class);

流方式读取Excel2003-Excel03SaxReader


在标准的ExcelReader中,如果数据量较大,读取Excel会非常缓慢,并有可能造成内存溢出。因此针对大数据量的Excel,Hutool封装了event模式的读取方式。Excel03SaxReader只支持Excel2003格式的Sax读取。

使用

reader方法的第二个参数是sheet的序号,-1表示读取所有sheet,0表示第一个sheet,依此类推。

定义行处理器

首先我们实现一下RowHandler接口,这个接口是Sax读取的核心,通过实现handle方法编写我们要对每行数据的操作方式(比如按照行入库,入List或者写出到文件等),在此我们只是在控制台打印。

private RowHandler createRowHandler() {

   return new RowHandler() {

       @Override

       public void handle(int sheetIndex, long rowIndex, List<Object> rowlist) {

           // 这里也可以处理成List或入库

           Console.log("[{}] [{}] {}", sheetIndex, rowIndex, rowlist);

       }

   };

}Copy to clipboardErrorCopied

ExcelUtil快速读取

ExcelUtil.read03BySax("aaa.xls", 1, createRowHandler());Copy to clipboardErrorCopied

构建对象读取

Excel03SaxReader reader = new Excel03SaxReader(createRowHandler());

reader.read("aaa.xls", 0);Copy to clipboardErrorCopied

流方式读取Excel2007-Excel07SaxReader

介绍

在标准的ExcelReader中,如果数据量较大,读取Excel会非常缓慢,并有可能造成内存溢出。因此针对大数据量的Excel,Hutool封装了Sax模式的读取方式。Excel07SaxReader只支持Excel2007格式的Sax读取。

使用

reader方法的第二个参数是sheet的序号,-1表示读取所有sheet,0表示第一个sheet,依此类推。

定义行处理器

首先我们实现一下RowHandler接口,这个接口是Sax读取的核心,通过实现handle方法编写我们要对每行数据的操作方式(比如按照行入库,入List或者写出到文件等),在此我们只是在控制台打印。

private RowHandler createRowHandler() {

   return new RowHandler() {

       @Override

       public void handle(int sheetIndex, long rowIndex, List<Object> rowlist) {

           Console.log("[{}] [{}] {}", sheetIndex, rowIndex, rowlist);

       }

   };

}Copy to clipboardErrorCopied

ExcelUtil快速读取

ExcelUtil.read07BySax("aaa.xlsx", 0, createRowHandler());Copy to clipboardErrorCopied

构建对象读取

Excel07SaxReader reader = new Excel07SaxReader(createRowHandler());

reader.read("d:/text.xlsx", 0);Copy to clipboardErrorCopied

相关文章
|
easyexcel Java 测试技术
读取Excel还用POI?试试这款开源工具EasyExcel
读取Excel还用POI?试试这款开源工具EasyExcel
379 0
|
6月前
|
SQL 分布式计算 数据挖掘
从Excel到高级工具:数据分析进阶指南
从Excel到高级工具:数据分析进阶指南
261 54
|
6月前
|
人工智能 算法 安全
使用CodeBuddy实现批量转换PPT、Excel、Word为PDF文件工具
通过 CodeBuddy 实现本地批量转换工具,让复杂的文档处理需求转化为 “需求描述→代码生成→一键运行” 的极简流程,真正实现 “技术为效率服务” 的目标。感兴趣的快来体验下把
229 10
|
9月前
|
分布式计算 大数据 数据处理
从Excel到大数据:别让工具限制你的思维!
从Excel到大数据:别让工具限制你的思维!
338 85
|
11月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
2350 65
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
人工智能 Python
读取excel工具:openpyxl | AI应用开发
`openpyxl` 是一个 Python 库,专门用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件。它是处理 Excel 文件的强大工具,可以让你在不需要安装 Excel 软件的情况下,对 Excel 文件进行创建、修改、读取和写入操作【10月更文挑战第3天】
349 0
|
数据挖掘 数据安全/隐私保护 Python
【Python数据分析】<数据分析工具>基于Excel的数据分析
【1月更文挑战第22天】【Python数据分析】<数据分析工具>基于Excel的数据分析
|
8月前
|
人工智能 数据可视化 前端开发
Probly:开源 AI Excel表格工具,交互式生成数据分析结果与可视化图表
Probly 是一款结合电子表格功能与 Python 数据分析能力的 AI 工具,支持在浏览器中运行 Python 代码,提供交互式电子表格、数据可视化和智能分析建议,适合需要强大数据分析功能又希望操作简便的用户。
965 2
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
160 0
|
11月前
|
人工智能 自然语言处理 JavaScript
Univer:开源全栈 AI 办公工具,支持 Word、Excel、PPT 等文档处理和多人实时协作
Univer 是一款开源的 AI 办公工具,支持 Word、Excel 等文档处理的全栈解决方案。它具有强大的功能、高度的可扩展性和跨平台兼容性,适用于个人和企业用户,能够显著提高工作效率。
1644 9
Univer:开源全栈 AI 办公工具,支持 Word、Excel、PPT 等文档处理和多人实时协作

热门文章

最新文章