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

相关文章
|
1月前
|
easyexcel Java 测试技术
读取Excel还用POI?试试这款开源工具EasyExcel
读取Excel还用POI?试试这款开源工具EasyExcel
58 0
|
9月前
|
Java 数据挖掘 BI
如何使用Hutool插入图片到Excel中?
如何使用Hutool插入图片到Excel中?
292 0
|
3月前
|
数据挖掘 数据安全/隐私保护 Python
【Python数据分析】<数据分析工具>基于Excel的数据分析
【1月更文挑战第22天】【Python数据分析】<数据分析工具>基于Excel的数据分析
|
4月前
hutool获取excel中的图片
hutool获取excel中的图片
168 1
|
2月前
|
自然语言处理 安全 Unix
一键式Excel分词统计工具:如何轻松打包Python脚本为EXE
一键式Excel分词统计工具:如何轻松打包Python脚本为EXE
44 0
|
3月前
|
JSON 数据格式
将json格式的数据快速转换为excel,使用在线工具轻松搞定
将json格式的数据快速转换为excel,使用在线工具轻松搞定
139 0
|
8月前
|
存储 Java BI
探索Apache POI库:强大的Excel和Word文档处理工具
在企业应用和数据处理中,Excel和Word文档是常见的数据交换和存储格式。然而,处理和操作这些文档可能是一项繁琐的任务。Apache POI库作为一款强大的文档处理工具,可以帮助我们更轻松地进行Excel和Word文档的读写、编辑和生成。本文将深入探讨Apache POI库的基本概念、特点,以及如何在实际应用中使用它进行文档处理。
408 0
|
4月前
|
小程序 索引 Python
Python自动化办公之Excel对比工具
Python自动化办公之Excel对比工具
|
9月前
|
JSON 数据格式
excel的导入导出和异常非空 总计等处理;导出多个excel合并导出zip(hutool导出)(详细讲解包括分析等等)(一)
excel的导入导出和异常非空 总计等处理;导出多个excel合并导出zip(hutool导出)(详细讲解包括分析等等)(一)
113 0
|
4月前
hutool excel写数据
hutool excel写数据
42 1