Excel工具-HUTOOL-读取Excel

简介: Hutool提供ExcelReader封装,支持读取Excel为List、Map或Bean。针对大数据量,提供Excel03SaxReader和Excel07SaxReader,基于SAX模式高效流式读取,避免内存溢出,支持按行处理数据,适用于xls和xlsx格式。

依赖
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快速读取
构建对象读取
Plain Text
复制代码
1
2
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或者写出到文件等),在此我们只是在控制台打印。
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

目录
相关文章
|
存储 Java
ArrayList自动扩容(详细篇)
ArrayList自动扩容(详细篇)
1003 1
|
API
xxl-job restful api
xxl-job restful api
713 0
|
11月前
|
Java 大数据 Apache
Excel工具-HUTOOL-输出Excel
Hutool基于Apache POI封装了Excel读写功能,提供ExcelWriter和BigExcelWriter类,支持写出List、Map、Bean等数据类型到Excel,可自定义样式、多sheet操作,并解决大数据量导出时的内存溢出问题,适用于文件导出、客户端下载等场景。
|
11月前
|
Apache
Excel工具-HUTOOL-读取Excel
基于Hutool和Apache POI,封装Excel读取工具,支持xls/xlsx格式。可读取为List、Map或Bean,提供Sax模式(Excel03SaxReader/Excel07SaxReader)高效处理大文件,避免内存溢出,适用于海量数据流式读取。
|
11月前
|
Java 大数据 Maven
Excel工具-HUTOOL-输出Excel
Hutool封装Excel写出功能,提供ExcelWriter与BigExcelWriter,支持数据、Map、Bean等写入,可自定义样式、多sheet、标题别名及流式输出,避免内存溢出,适用于导出与下载场景。
476 0
|
11月前
Excel工具-HUTOOL-读取Excel
Hutool的ExcelReader封装了Excel读取操作,支持读取为Map、Bean或列表,适用于大文件的SAX模式避免内存溢出。提供Excel03SaxReader和Excel07SaxReader分别处理2003/2007格式,通过RowHandler实现行级处理,支持按Sheet读取,可高效解析海量数据。
|
缓存 架构师 Java
图解 Spring 循环依赖,一文吃透!
Spring 循环依赖如何解决,是大厂面试高频,本文详细解析,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
图解 Spring 循环依赖,一文吃透!
|
Web App开发 XML 编解码
IE浏览器下载文件中文文件名乱码问题解决
IE浏览器下载文件中文文件名乱码问题解决
822 0
|
监控 Java easyexcel
面试官:POI大量数据读取内存溢出?如何解决?
【10月更文挑战第14天】 在处理大量数据时,使用Apache POI库读取Excel文件可能会导致内存溢出的问题。这是因为POI在读取Excel文件时,会将整个文档加载到内存中,如果文件过大,就会消耗大量内存。以下是一些解决这一问题的策略:
2489 1