一 Excel导入导出的应用场景

1 数据导入

减轻录入工作量

2 数据导出

统计信息归档

3 数据传输

异构系统之间数据传输

二 EasyExcel简介

1 官方网站

https://github.com/alibaba/easyexcel

快速开始:https://www.yuque.com/easyexcel/doc/easyexcel

2 EasyExcel特点

Java领域解析、生成Excel比较有名的框架有Apache poi、jxl等。但他们都存在一个严重的问题就是非常的耗内存。如果你的系统并发量不大的话可能还行,但是一旦并发上来后一定会OOM或者JVM频繁的full gc。

EasyExcel是阿里巴巴开源的一个excel处理框架,以使用简单、节省内存著称。EasyExcel能大大减少占用内存的主要原因是在解析Excel时没有将文件数据一次性全部加载到内存中,而是从磁盘上一行行读取数据,逐个解析。

EasyExcel采用一行一行的解析模式,并将一行的解析结果以观察者的模式通知处理(AnalysisEventListener)

三 写实战

1 创建一个普通的maven项目

项目名:alibaba_easyexcel

2 pom中引入xml相关依赖

<dependencies><!-- easyexcel --><dependency><groupId>com.alibaba</groupId><artifactId>easyexcel</artifactId><version>2.1.7</version></dependency><!-- easyexcel依赖slf4j-simple --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-simple</artifactId><version>1.7.5</version></dependency><!-- easyexcel依赖xmlbeans --><dependency><groupId>org.apache.xmlbeans</groupId><artifactId>xmlbeans</artifactId><version>3.1.0</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.10</version></dependency><!-- junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version></dependency>
</dependencies>

3 创建实体类

@Data
public class ExcelStudentData {/*** 姓名*/@ExcelProperty(value = "姓名", index = 2)private String name;/*** 生日*/@DateTimeFormat("yyyy年MM月dd日HH时mm分ss秒")@ExcelProperty(value = "生日", index = 3)private Date birthday;/*** 薪资*/@NumberFormat("#.##%")@ExcelProperty(value = "薪资", index = 5)private Double salary;/*** 忽略密码字段*/@ExcelIgnoreprivate String password;
}

4 创建测试

public class ExcelWriteTest {/*** 功能描述:07版测试** @author cakin* @date 2020/11/30*/@Testpublic void simpleWrite07() {String fileName = "F:/temp/simpleWrite-07.xlsx";EasyExcel.write(fileName, ExcelStudentData.class).sheet("学生信息").doWrite(data());}/*** 功能描述:03版测试** @author cakin* @date 2020/11/30*/@Testpublic void simpleWrite03() {String fileName = "F:/temp/simpleWrite-03.xls";EasyExcel.write(fileName, ExcelStudentData.class).excelType(ExcelTypeEnum.XLS) // 默认是 XLSX.sheet("学生信息").doWrite(data());}/*** 功能描述:构造数据** @author cakin* @date 2020/11/30*/private List<ExcelStudentData> data() {List<ExcelStudentData> list = new ArrayList<>();for (int i = 0; i < 65535; i++) {ExcelStudentData data = new ExcelStudentData();data.setName("Helen" + i);data.setBirthday(new Date());data.setSalary(0.12345);data.setPassword("123456");list.add(data);}return list;}
}

四 测试

五 说明

  • 07版本的Excel和03版本的写入方式有所不同,03版本是一次性写入,可能会导致内容溢出问题,07版本是一条条写入。07版本写入文件后,大小较03版要小。
  • 03版本的Excel一次最多可写65536行,07版本没限制。

EasyExcel简介相关推荐

  1. easyexcel 简介、中文文档、中英对照文档 下载

    easyexcel 文档 下载链接(含jar包.源码.pom) 组件名称 中文-文档-下载链接 中英对照-文档-下载链接 easyexcel-3.0.5.jar easyexcel-3.0.5-API ...

  2. EasyExcel简介 和 使用

    EasyExcel简介 1.EasyExcel特点 Java领域解析.生成Excel比较有名的框架有Apache poi.jxl等.但他们都存在一个严重的问题就是非常的耗内存.如果你的系统并发量不大的 ...

  3. easyexcel 简介

    easyexcel 简介 官网:https://www.yuque.com/easyexcel/doc/easyexcel 传统的excel处理工具(apache poi.jxl等)严重消耗内存(3兆 ...

  4. EasyExcel实现文件读取、导出、上传、下载操作

    一.EasyExcel简介 ​     Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度 ...

  5. EasyExcel读写Excel的基本使用

    Excel导入导出的应用场景 1.数据导入:减轻录入工作量 2.数据导出:统计信息归档 3.数据传输:异构系统之间数据传输 EasyExcel简介 EasyExcel特点 Java领域解析.生成Exc ...

  6. easyexcel 动态列_easyexcel动态表头列导出SequenceDiagram 阅读源码事半功倍

    EasyExcel简介 Java解析.生成Excel比较有名的框架有Apache poi.jxl.但他们都存在一个严重的问题就是非常的耗内存,poi有一套SAX模式的API可以一定程度的解决一些内存溢 ...

  7. easyExcel 使用指南详解

    来源:easyExcel 使用指南详解 - 知乎 easyExcel简介 Java领域解析.生成Excel比较有名的框架有Apache poi.jxl等.但他们都存在一个严重的问题就是非常的耗内存.如 ...

  8. EasyExcel删除模版Sheet页

    EasyExcel简介 git地址:https://github.com/alibaba/easyexcel 文档:https://easyexcel.opensource.alibaba.com/d ...

  9. EasyExcel实现Excel文件导入导出功能

    一.EasyExcel简介 Java领域解析.生成Excel比较有名的框架有Apache poi.jxl等.但他们都存在一个严重的问题就是非常的耗内存.如果你的系统并发量不大的话可能还行,但是一旦并发 ...

最新文章

  1. 为了节省能量,人类演化出了“不合规律”的大脑神经元 | Nature
  2. windows C++ Opengl基础框架源码
  3. BTrace是一个非常不错的java诊断工具
  4. Android重点笔记,安卓listview 懒加载的实现笔记
  5. html代码 打开本地文件,打开本地HTML文件
  6. 1037C. Equalize
  7. PHP CURL 使用代理访问服务器
  8. C++局部变量和全局变量的初始化
  9. Android 应用开发(18)---在运行时请求权限
  10. 同步、异步、阻塞、非阻塞 简析
  11. android sharedpreference 清空,Android 从SharedPreferences中存储,检索,删除和清除数据...
  12. VScode Remote 直接打开远程服务器目录进行调试
  13. windows下使用linux terminal
  14. 2021MathorCup高校数学建模挑战赛——大数据竞赛的一些想法总结
  15. RedHat红帽RHEL7.2镜像下载以及安装教程(内含下载链接)
  16. Windows聚焦壁纸
  17. 国际品牌拧紧工具的优缺点
  18. 原力计划第5周榜单揭晓!
  19. unity 发光材质
  20. 谈谈VR游戏中的性能优化

热门文章

  1. 四通OKI5760SP针式打印机连续打印第一张正常,后面的对不上位置
  2. Cisco 3750/Cisco 4506 交换机vlan划分
  3. android listview排序分组,Android:如何对ListView的数据进行排序?
  4. 旺店通·企业奇门与金蝶云星空对接集成查询盘点单打通其他入库新增
  5. html如何设置填充,CSS填充距离怎么设置?
  6. PS4手柄 安卓 蓝牙 高延迟解决方案 小米红米 k20 miui
  7. python能在pdf上加内容吗_在Python中向现有PDF文档添加文本
  8. 百度地图以“准”作则,诠释AI时代新出行
  9. float到底是干什么的?
  10. 【史上最坑爹的游戏】002 关卡选择画面的实现