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

相关文章
|
7月前
|
easyexcel Java 测试技术
读取Excel还用POI?试试这款开源工具EasyExcel
读取Excel还用POI?试试这款开源工具EasyExcel
185 0
|
Java 数据挖掘 BI
如何使用Hutool插入图片到Excel中?
如何使用Hutool插入图片到Excel中?
513 0
|
2月前
|
人工智能 Python
读取excel工具:openpyxl | AI应用开发
`openpyxl` 是一个 Python 库,专门用于读写 Excel 2010 xlsx/xlsm/xltx/xltm 文件。它是处理 Excel 文件的强大工具,可以让你在不需要安装 Excel 软件的情况下,对 Excel 文件进行创建、修改、读取和写入操作【10月更文挑战第3天】
84 0
|
4月前
|
关系型数据库 MySQL Shell
不通过navicat工具怎么把查询数据导出到excel表中
不通过navicat工具怎么把查询数据导出到excel表中
47 0
|
27天前
|
SQL 数据可视化 数据挖掘
想让Excel表格设计更美观?试试这几款好用工具!
Excel表格设计在项目管理和数据分析中至关重要。本文推荐四款辅助工具:板栗看板、Excel自动图表助手、Think-Cell Chart 和 Power BI,分别在任务管理、图表生成、数据可视化等方面表现突出,帮助你设计出更专业、美观的表格。
47 2
|
1月前
|
数据处理
在Excel中,通配符是一种强大的工具
【10月更文挑战第23天】在Excel中,通配符是一种强大的工具
22 4
|
7月前
|
数据挖掘 数据安全/隐私保护 Python
【Python数据分析】<数据分析工具>基于Excel的数据分析
【1月更文挑战第22天】【Python数据分析】<数据分析工具>基于Excel的数据分析
|
4月前
|
数据可视化 数据格式 索引
我用Python操作Excel的两种主要工具
我用Python操作Excel的两种主要工具
|
4月前
|
人工智能 自然语言处理 小程序
【工具】Excel竟然也能搞AI,快来玩转chatexcel
ChatExcel是由北京大学团队开发的一款人工智能办公辅助工具,用户可通过自然语言与Excel表格互动,简化数据处理任务,如排序、求和等,无需手动编写公式或函数。本文介绍了ChatExcel的功能特点、使用方法及实操步骤,展示了如何通过简单指令完成复杂操作,提高工作效率。此外,还提供了新手指南帮助快速上手。
179 0
【工具】Excel竟然也能搞AI,快来玩转chatexcel
|
6月前
|
Java API Spring
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
集成EasyPoi(一个基于POI的Excel导入导出工具)到Spring Boot项目中
561 1