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

相关文章
|
9月前
|
easyexcel Java 测试技术
读取Excel还用POI?试试这款开源工具EasyExcel
读取Excel还用POI?试试这款开源工具EasyExcel
220 0
|
2月前
|
人工智能 自然语言处理 Java
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
FastExcel 是一款基于 Java 的高性能 Excel 处理工具,专注于优化大规模数据处理,提供简洁易用的 API 和流式操作能力,支持从 EasyExcel 无缝迁移。
224 9
FastExcel:开源的 JAVA 解析 Excel 工具,集成 AI 通过自然语言处理 Excel 文件,完全兼容 EasyExcel
|
4月前
|
人工智能 Python
读取excel工具:openpyxl | AI应用开发
`openpyxl` 是一个 Python 库,专门用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件。它是处理 Excel 文件的强大工具,可以让你在不需要安装 Excel 软件的情况下,对 Excel 文件进行创建、修改、读取和写入操作【10月更文挑战第3天】
125 0
|
17小时前
|
分布式计算 大数据 数据处理
从Excel到大数据:别让工具限制你的思维!
从Excel到大数据:别让工具限制你的思维!
108 85
|
2月前
|
人工智能 自然语言处理 JavaScript
Univer:开源全栈 AI 办公工具,支持 Word、Excel、PPT 等文档处理和多人实时协作
Univer 是一款开源的 AI 办公工具,支持 Word、Excel 等文档处理的全栈解决方案。它具有强大的功能、高度的可扩展性和跨平台兼容性,适用于个人和企业用户,能够显著提高工作效率。
177 8
Univer:开源全栈 AI 办公工具,支持 Word、Excel、PPT 等文档处理和多人实时协作
|
6月前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
67 0
|
3月前
|
数据可视化 数据挖掘 项目管理
打破协作壁垒,Excel多人协同编辑工具带来翻天覆地的变化!
在现代办公中,团队协作和信息共享至关重要。Excel的多人协同编辑功能显著提升了工作效率,避免了版本冲突和重复劳动。市场上的Google Sheets、Airtable、板栗看板和Zoho Sheet等工具也提供了类似功能。以其清晰的界面和强大的数据分析能力,特别适合项目管理和进度追踪,帮助团队高效协作,达成目标。
|
3月前
|
SQL 数据可视化 数据挖掘
想让Excel表格设计更美观?试试这几款好用工具!
Excel表格设计在项目管理和数据分析中至关重要。本文推荐四款辅助工具:板栗看板、Excel自动图表助手、Think-Cell Chart 和 Power BI,分别在任务管理、图表生成、数据可视化等方面表现突出,帮助你设计出更专业、美观的表格。
142 2
|
9月前
|
数据挖掘 数据安全/隐私保护 Python
【Python数据分析】<数据分析工具>基于Excel的数据分析
【1月更文挑战第22天】【Python数据分析】<数据分析工具>基于Excel的数据分析
|
3月前
|
数据处理
在Excel中,通配符是一种强大的工具
【10月更文挑战第23天】在Excel中,通配符是一种强大的工具
44 4

热门文章

最新文章