EasyExcel
======================
[![Build Status](https://travis-ci.org/alibaba/easyexcel.svg?branch=master)](https://travis-ci.org/alibaba/easyexcel)
[![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)
[QQ群: 662022184](//shang.qq.com/wpa/qunwpa?idkey=53d9d821b0833e3c14670f007488a61e300f00ff4f1b81fd950590d90dd80f80)
[钉钉1群(已满): 21960511](https://qr.dingtalk.com/action/joingroup?code=v1,k1,cchz6k12ci9B08NNqhNRFGXocNVHrZtW0kaOtTKg/Rk=&_dt_no_comment=1&origin=11)
[钉钉2群: 32796397](https://qr.dingtalk.com/action/joingroup?code=v1,k1,jyU9GtEuNU5S0QTyklqYcYJ8qDZtUuTPMM7uPZTS8Hs=&_dt_no_comment=1&origin=11)
[官方网站: https://yuque.com/easyexcel](https://www.yuque.com/easyexcel/doc/easyexcel)
[常见问题](https://www.yuque.com/easyexcel/faq)
#### 因为公司不方便用QQ,所以建议加钉钉群
# JAVA解析Excel工具EasyExcel
Java解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到几M,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便
## 64M内存1分钟内读取75M(46W行25列)的Excel
当然还有急速模式能更快,但是内存占用会在100M多一点
![img](img/readme/large.png)
## 相关文档
* [快速开始](https://www.yuque.com/easyexcel/doc/easyexcel)
* [关于软件](/abouteasyexcel.md)
* [更新记事](/update.md)
* [贡献代码](https://www.yuque.com/easyexcel/doc/contribute)
## 维护者
玉霄、庄家钜、怀宇
## 快速开始
### 读Excel
DEMO代码地址:[https://github.com/alibaba/easyexcel/blob/master/src/test/java/com/alibaba/easyexcel/demo/read/ReadTest.java](/src/test/java/com/alibaba/easyexcel/test/demo/read/ReadTest.java)
```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/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java](/src/test/java/com/alibaba/easyexcel/test/demo/write/WriteTest.java)
```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/src/test/java/com/alibaba/easyexcel/test/demo/web/WebTest.java](/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.ms-excel");
response.setCharacterEncoding("utf-8");
// 这里URLEncoder.encode可以防止中文乱码 当然和easyexcel没有关系
String fileName = URLEncoder.encode("测试", "UTF-8");
response.setHeader("Content-disposition", "attachment;filename=" + fileName + ".xlsx");
EasyExcel.write(response.getOutputStream(), DownloadData.class).sheet("模板").doWrite(data());
}
/**
* 文件上传
* <p>1. 创建excel对应的实体对象 参照{@link UploadData}
* <p>2. 由于默认一行行的读取excel,所以需要创建excel一行一行的回调监听器,参照{@link UploadDataListener}
* <p>3. 直接读即可
*/
@PostMapping("upload")
@ResponseBody
public String upload(MultipartFile file) throws IOException {
EasyExcel.read(file.getInputStream(), UploadData.class, new UploadDataListener(uploadDAO)).sheet().doRead();
return "success";
}
```
### 联系我们
有问题阿里同事可以通过钉钉找到我,阿里外同学可以通过git留言。其他技术非技术相关的也欢迎一起探讨。
### 招聘&交流
阿里巴巴新零售事业部--诚招JAVA资深开发、技术专家。有意向可以微信联系,简历可以发我邮箱jipengfei.jpf@alibaba-inc.com
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
ava解析、生成Excel比较有名的框架有Apache poi、jxl。但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢出的问题,但POI还是有一些缺陷,比如07版Excel解压缩以及解压后存储都是在内存中完成的,内存消耗依然很大。easyexcel重写了poi对07版Excel的解析,能够原本一个3M的excel用POI sax依然需要100M左右内存降低到KB级别,并且再大的excel不会出现内存溢出,03版依赖POI的sax模式。在上层做了模型转换的封装,让使用者更加简单方便
资源推荐
资源详情
资源评论
收起资源包目录
easyexcel处理jar包 (458个子文件)
mvnw.cmd 6KB
jvm.config 9B
.editorconfig 309B
.gitignore 142B
maven-wrapper.jar 50KB
DataFormatter1.java 51KB
DataFormatter.java 29KB
WriteTest.java 24KB
AbstractWriteHolder.java 23KB
ExcelWriteFillExecutor.java 23KB
WriteContextImpl.java 18KB
EasyExcelFactory.java 16KB
WriteHandler.java 12KB
WriteCellStyle.java 12KB
StyleProperty.java 11KB
ReadTest.java 11KB
ExcelWriter.java 11KB
WriteHandlerUtils.java 10KB
FillTest.java 10KB
DateUtils.java 10KB
XlsxSaxAnalyser.java 10KB
WriteWorkbookHolder.java 10KB
ExcelReader.java 9KB
ReadWorkbookHolder.java 9KB
ExcelHeadProperty.java 9KB
FillDataTest.java 9KB
BuiltinFormats.java 8KB
ExcelWriteAddExecutor.java 8KB
ExcelWriteHeadProperty.java 8KB
PoiTest.java 8KB
ExcelAnalyserImpl.java 8KB
StyleTest.java 8KB
XlsSaxAnalyser.java 8KB
CellData.java 8KB
StyleDataTest.java 7KB
StyleUtil.java 7KB
AbstractExcelWriteExecutor.java 7KB
FileUtils.java 7KB
ExcelReaderBuilder.java 7KB
DataFormatTest.java 7KB
DefaultAnalysisEventProcessor.java 7KB
DefaultConverterLoader.java 6KB
ReadWorkbook.java 6KB
ClassUtils.java 6KB
ModelBuildEventListener.java 6KB
ParameterDataTest.java 6KB
CompatibilityDataTest.java 5KB
AnalysisContextImpl.java 5KB
ConverterUtils.java 5KB
AbstractReadHolder.java 5KB
WriteSheetHolder.java 5KB
NumberUtils.java 5KB
CompatibilityParameterDataTest.java 5KB
Wirte.java 5KB
FontProperty.java 5KB
WriteWorkbook.java 5KB
XlsxRowHandler.java 5KB
ExcelWriterBuilder.java 5KB
FillTempTest.java 4KB
HeadStyle.java 4KB
ContentStyle.java 4KB
Ehcache.java 4KB
Lock2Test.java 4KB
WebTest.java 4KB
Head.java 4KB
PoiWriteTest.java 4KB
ReadSheetHolder.java 4KB
ConverterDataTest.java 4KB
ExcelTypeEnum.java 4KB
AbstractHolder.java 4KB
ReadAllConverterDataListener.java 4KB
FormulaRecordHandler.java 4KB
ExcelBuilderImpl.java 3KB
WorkBookUtil.java 3KB
Sheet.java 3KB
AnalysisContext.java 3KB
WriteBasicParameter.java 3KB
CellWriteHandler.java 3KB
CellExtra.java 3KB
LargeDataTest.java 3KB
AbstractCellStyleStrategy.java 3KB
BofRecordHandler.java 3KB
WriteFont.java 3KB
RepetitionDataTest.java 3KB
XlsReadWorkbookHolder.java 3KB
AbstractVerticalCellStyleStrategy.java 3KB
AbstractExcelWriterParameterBuilder.java 3KB
LongestMatchColumnWidthStyleStrategy.java 3KB
UploadDataListener.java 3KB
DemoExceptionListener.java 3KB
DemoDataListener.java 3KB
WriteHandlerTest.java 3KB
EncryptDataTest.java 3KB
XlsListSheetListener.java 3KB
SimpleReadCacheSelector.java 3KB
Poi3Test.java 3KB
DemoHeadDataListener.java 3KB
CellTagHandler.java 2KB
AnalysisCell.java 2KB
WriteContext.java 2KB
共 458 条
- 1
- 2
- 3
- 4
- 5
资源评论
gavin_huang
- 粉丝: 0
- 资源: 17
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功