# 🔥作者最新开源项目[Chat2DB](https://github.com/chat2db/Chat2DB)
[Chat2DB](https://github.com/chat2db/Chat2DB) 智能数据库客户端,数据报表工具,自然语言生成SQL,生成报表。 GitHub地址 [https://github.com/alibaba/chat2db](https://github.com/chat2db/Chat2DB)
EasyExcel
======================
[![Build Status](https://github.com/alibaba/easyexcel/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/alibaba/easyexcel/actions/workflows/ci.yml?query=branch%3Amaster)
[![Maven central](https://maven-badges.herokuapp.com/maven-central/com.alibaba/easyexcel/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.alibaba/easyexcel)
[![License](http://img.shields.io/:license-apache-brightgreen.svg)](http://www.apache.org/licenses/LICENSE-2.0.html)
[![](https://img.shields.io/badge/EasyExcel-%E6%9F%A5%E7%9C%8B%E8%B4%A1%E7%8C%AE%E6%8E%92%E8%A1%8C%E6%A6%9C-orange)](https://opensource.alibaba.com/contribution_leaderboard/details?projectValue=easyexcel)
# JAVA解析Excel工具
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。
easyexcel重写了poi对07版Excel的解析,一个3M的excel用POI sax解析依然需要100M左右内存,改用easyexcel可以降低到几M,并且再大的excel也不会出现内存溢出;03版依赖POI的sax模式,在上层做了模型转换的封装,让使用者更加简单方便
# 网站
* 官方网站:[https://easyexcel.opensource.alibaba.com/](https://easyexcel.opensource.alibaba.com/)
* github地址:[https://github.com/alibaba/easyexcel](https://github.com/alibaba/easyexcel)
* gitee地址:[https://gitee.com/easyexcel/easyexcel](https://gitee.com/easyexcel/easyexcel)
# 16M内存23秒读取75M(46W行25列)的Excel(3.2.1+版本)
当然还有[极速模式](https://easyexcel.opensource.alibaba.com/qa/read#%E5%BC%80%E5%90%AF%E6%80%A5%E9%80%9F%E6%A8%A1%E5%BC%8F)
能更快,但是内存占用会在100M多一点
![img](img/readme/large.png)
# 最新版本
```xml
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.3.2</version>
</dependency>
```
# 帮忙点个⭐Star
开源不易,如果觉得EasyExcel对您的工作还是有帮助的话,请帮忙在<a target="_blank" href='https://github.com/alibaba/easyexcel'><img src="https://img.shields.io/github/stars/alibaba/easyexcel.svg?style=flat-square&label=Stars&logo=github" alt="github star"/></a>
的右上角点个⭐Star,您的支持是使EasyExcel变得更好最大的动力。
# 人员招聘
由于工作较忙,需要招聘一些同学加入`EasyExcel`开源,一起跟着`EasyExcel`成长。
## 你将获得
* 认识一帮热爱开源的小伙伴
* 你写的代码可以被无数人看到,提升自我编码能力
* 可能会有一定的物质奖励(在和公司申请,不一定能过)
## 你的工作
* 群&`issue`答疑
* 做一些代码的`PR`合并去修复bug
* 讨论`EasyExcel`规划
## 招聘要求
* 3年以上Java编程经验,基础扎实
* 对技术比较热爱,并且喜欢阅读源码
* 自驱力强,能主动的研究一些问题
* 需要持之以恒,开源需要长期维护
## 联系方式
直接加钉钉群,联系是仪即可
# 如何获取帮助
## 优先建议自己通过文档来解决问题
* [快速开始](https://easyexcel.opensource.alibaba.com/docs/current/)
* [常见问题](https://easyexcel.opensource.alibaba.com/docs/qa/)
* [API](https://easyexcel.opensource.alibaba.com/docs/current/api/)
## 其次建议通过`issues`来解决解决问题
可以尝试在以下2个链接搜索问题,如果不存在可以尝试创建`issue`。
* 去 [github](https://github.com/alibaba/easyexcel/issues) 搜索`issues`
* 去 [gitee](https://gitee.com/easyexcel/easyexcel/issues) 搜索`issues`
通过 `issues` 解决问题,可以给后面遇到相同问题的同学查看,所以比较推荐这种方式。
不管`github`、`gitee`都会定期有人回答您的问题,比较紧急可以在提完`issue`以后在钉钉群艾特群主并发送`issue`地址帮忙解决。
`QQ` 公司不让用,有时候也会去看,但是核心肯定还是在钉钉。
## 也可以加入钉钉&QQ群来解决问题
关注微信公众号(Text2SQL)回复 "群" or "加群" 加入微信群、钉钉群、QQ群探讨问题
<a><img src="https://oss-chat2db.alibaba.com/static/%E5%85%AC%E4%BC%97%E5%8F%B7.jpg" width="30%"/></a>
# 维护者
姬朋飞(玉霄)、庄家钜、怀宇、敖丙
# 快速开始
## 读Excel
demo代码地址:[https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java](https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java)
详细文档地址:[https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/read)
```java
/**
* 最简单的读
* <p>1. 创建excel对应的实体对象 参照{@link DemoData}
* <p>2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link DemoDataListener}
* <p>3. 直接读即可
*/
@Test
public void simpleRead() {
String fileName = TestFileUtil.getPath() + "demo" + File.separator + "demo.xlsx";
// 这里 需要指定读用哪个class去读,然后读取第一个sheet 文件流会自动关闭
EasyExcel.read(fileName, DemoData.class, new DemoDataListener()).sheet().doRead();
}
```
## 写Excel
demo代码地址:[https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java](https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java)
详细文档地址:[https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write](https://easyexcel.opensource.alibaba.com/docs/current/quickstart/write)
```java
/**
* 最简单的写
* <p>1. 创建excel对应的实体对象 参照{@link com.alibaba.easyexcel.test.demo.write.DemoData}
* <p>2. 直接写即可
*/
@Test
public void simpleWrite() {
String fileName=TestFileUtil.getPath()+"write"+System.currentTimeMillis()+".xlsx";
// 这里 需要指定写用哪个class去读,然后写到第一个sheet,名字为模板 然后文件流会自动关闭
// 如果这里想使用03 则 传入excelType参数即可
EasyExcel.write(fileName,DemoData.class).sheet("模板").doWrite(data());
}
```
## web上传、下载
demo代码地址:[https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java](https://github.com/alibaba/easyexcel/blob/master/easyexcel-test/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java)
```java
/**
* 文件下载(失败了会返回一个有部分数据的Excel)
* <p>
* 1. 创建excel对应的实体对象 参照{@link DownloadData}
* <p>
* 2. 设置返回的 参数
* <p>
* 3. 直接写,这里注意,finish的时候会自动关闭OutputStream,当然你外面再关闭流问题不大
*/
@GetMapping("download")
public void download(HttpServletResponse response) throws IOException {
// 这里注意 有同学反应使用swagger 会导致各种问题,请直接用浏览器或者用postman
response.setContentType("application/vnd.openxmlformats-officedocument.spreadsheetml.sheet");
response.setCharacterEncoding("utf-8");
// 这里URLEn
没有合适的资源?快使用搜索试试~ 我知道了~
快速、简洁、解决大文件内存溢出的java处理Excel工具 .rar
共623个文件
java:529个
xlsx:35个
md:16个
需积分: 5 0 下载量 5 浏览量
2023-06-29
18:27:05
上传
评论 1
收藏 4.91MB RAR 举报
温馨提示
前言 最近有个项目在生产环境做数据导入时,发现开始执行导入任务会出现cpu狂飙的情况。几番定位查找发现是在读取excel的时候导致此问题的发生,因此在通常使用的为POI的普通读取,在遇到大数据量excel,50mb大小或数十万行的级别的数据容易导致读取时内存溢出或者cpu飙升。需要注意,本文讨论的是针对xlsx格式的excel文件。 关于Excel相关技术 在Java技术生态圈中,可以进行Excel处理的主流技术包括:Apache POI,JXL,Alibaba EasyExcel等。由于JXL只支持Excel2003以下版本,所以不太常见。 Apache POI:基于DOM方式进行解析,将文件直接加载内存,所以速度较快,适合Excel文件数量不大的应用场景 Alibaba EasyExcel:采用逐行读取的解析模式,将每一行的解析结果以观察者模式通知处理(AnalyEventListener),所以比较适合数据体量较大的Excel文件解析。 场景复现与问题定位 问题代码 这种方式POI会把文件的所有内容都加载到内存中,读取大的excel文件时很容易占用大量内存导致oom的发生
资源推荐
资源详情
资源评论
收起资源包目录
快速、简洁、解决大文件内存溢出的java处理Excel工具 .rar (623个子文件)
mvnw.cmd 7KB
lombok.config 73B
converterCsv.csv 1KB
office_bom.csv 126B
no_bom.csv 123B
simple.csv 113B
.editorconfig 309B
.gitignore 188B
maven-wrapper.jar 57KB
DataFormatter1.java 50KB
WriteTest.java 37KB
DataFormatter.java 33KB
ExcelWriteFillExecutor.java 27KB
ClassUtils.java 25KB
WriteContextImpl.java 21KB
AbstractWriteHolder.java 20KB
FillStyleDataTest.java 19KB
Lock2Test.java 18KB
FillStyleAnnotatedTest.java 18KB
CsvSheet.java 18KB
DateUtils.java 17KB
AbstractExcelWriteExecutor.java 16KB
ReadTest.java 13KB
PoiTest.java 13KB
WriteCellStyle.java 13KB
WriteHandler.java 13KB
StyleDataTest.java 13KB
XlsxSaxAnalyser.java 12KB
WriteWorkbookHolder.java 12KB
StyleUtil.java 11KB
FillTest.java 10KB
EasyExcelFactory.java 10KB
FillTempTest.java 10KB
ExcelWriteAddExecutor.java 10KB
ExcludeOrIncludeDataTest.java 10KB
BuiltinFormats.java 9KB
StyleProperty.java 9KB
FillDataTest.java 9KB
ExcelAnalyserImpl.java 9KB
DefaultConverterLoader.java 9KB
TempLargeDataTest.java 9KB
StringUtils.java 9KB
CacheDataTest.java 9KB
CsvWorkbook.java 8KB
WriteHandlerUtils.java 8KB
StyleTest.java 8KB
FileUtils.java 8KB
XlsSaxAnalyser.java 8KB
CsvCell.java 8KB
WriteV33Test.java 8KB
ExcelReaderBuilder.java 7KB
Validate.java 7KB
ModelBuildEventListener.java 7KB
ConverterUtils.java 7KB
FieldUtils.java 7KB
ParameterDataTest.java 7KB
DataFormatTest.java 7KB
DefaultAnalysisEventProcessor.java 7KB
LargeDataTest.java 6KB
TempWriteTest.java 6KB
CompatibilityTest.java 6KB
ListUtils.java 6KB
SharedStringsTableHandler.java 6KB
ExcelWriteHeadProperty.java 6KB
NumberUtils.java 6KB
ReadWorkbookHolder.java 6KB
Ehcache.java 6KB
WriteTest.java 6KB
CsvCellStyle.java 6KB
CsvExcelReadExecutor.java 5KB
ReadCellData.java 5KB
Write.java 5KB
WorkBookUtil.java 5KB
XlsxRowHandler.java 5KB
MapUtils.java 5KB
AnalysisContextImpl.java 5KB
NoModelDataTest.java 5KB
FillAnnotationDataTest.java 5KB
CellWriteHandler.java 5KB
AnnotationDataTest.java 5KB
ExcelHeadProperty.java 5KB
FillTempTest.java 5KB
CellTagHandler.java 5KB
ContentStyle.java 5KB
BomDataTest.java 5KB
HeadStyle.java 5KB
ReadAllConverterDataListener.java 5KB
ConverterDataTest.java 4KB
AbstractReadHolder.java 4KB
ExcelWriterBuilder.java 4KB
PoiWriteTest.java 4KB
WebTest.java 4KB
ExcelWriter.java 4KB
FontProperty.java 4KB
SortDataTest.java 4KB
FormulaRecordHandler.java 4KB
ExcelTypeEnum.java 4KB
ClientAnchorData.java 4KB
CsvReadTest.java 4KB
WriteCellData.java 4KB
共 623 条
- 1
- 2
- 3
- 4
- 5
- 6
- 7
资源评论
野生的狒狒
- 粉丝: 1492
- 资源: 1530
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功