网站首页 > 精选教程 正文
?MyExcel,是一个集导入、导出、加密 Excel 等多项功能的 Java 工具包。
我们知道,理论上Excel保存的数据量是和硬盘大小相关的,那把大量同类数据保存到一份Excel中总是最合适的吗?
显然不是,因为硬盘虽然很大,可以存储大量数据,但是内存相对来说就小的多,在打开非常大的Excel时就会非常吃力,甚至无法打开。
为了能够让用户快速打开Excel,在导出非常大的数据量的Excel时我们可以采取生成多个Excel,每个Excel中仅仅保存指定数量的数据来解决上述问题。
我们看一下在MyExcel中拆分的具体流程。
案例
导出5000行数据,拆分成多个Excel,每个Excel中存放800数据,且最终以压缩包的形式导出给用户。
效果如下:
依赖导入
Maven:
<dependency>
<groupId>com.github.liaochong</groupId>
<artifactId>myexcel</artifactId>
<version>4.3.3</version>
</dependency>
Gradle:
compile group: 'com.github.liaochong', name: 'myexcel', version: '4.3.3'
导出实现
在DefaultStreamExcelBuilder中有个方法用于设置每个Excel的容量。
public DefaultStreamExcelBuilder<T> capacity(int capacity)
一旦调用该方法,则默认会将导出的数据进行拆分到多个Excel。
在最终导出Excel时选用导出为zip文件:
public Path buildAsZip(String fileName)
如果希望自行处理导出的多Excel文件,也可以在导出Excel时选用导出为文件列表:
public List<Path> buildAsPaths()
以下是完整的代码实现:
try (DefaultStreamExcelBuilder<Car> streamExcelBuilder = DefaultStreamExcelBuilder
.of(Car.class)
.sheetName("Car sheet")
// 容量设定
.capacity(80_0000)
.start()) {
for (int i = 0; i < 500_0000; i++) {
// 数据追加
Car car = new Car();
car.setBrand("品牌"+i);
car.setColor("颜色"+i);
streamExcelBuilder.append(car);
}
// 最终构建
Path zip = defaultExcelBuilder.buildAsZip("汽车数据压缩包");
}
public class Car {
@ExcelColumn(title="品牌")
private String brand;
@ExcelColumn(title="颜色")
private String color;
}
最后
MyExcel功能非常丰富,如需了解其他功能,请留言或移步仓库文档:Home · liaochong/myexcel Wiki · GitHub
猜你喜欢
- 2024-11-10 每日分享- jvm 如何压缩 java 项目的可执行文件
- 2024-11-10 15个最好用的JavaScript代码压缩工具
- 2024-11-10 Redis 6.2配置文件全解析:轻松优化缓存性能!
- 2024-11-10 Linux中常用的打包,压缩,解压 tar指令 zip指令
- 2024-11-10 Go发起HTTP2.0请求流程分析(后篇)——标头压缩
- 2024-11-10 hash碰撞的概率和可能性比你直觉中大得多
- 2024-11-10 2020上半年Java面试题总结,20多类1100道面试题...
- 2024-11-10 Facebook 发布最新数据压缩技术:可将 Android App 大小减少 20%
- 2024-11-10 一个简单的字符串,为什么 Redis 要设计的如此特别
- 2024-11-10 Android如何进行资源压缩 android资源文件路径
你 发表评论:
欢迎- 04-11Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- 04-11Java中你知道几种从字符串中找指定的字符的数量
- 04-11探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- 04-11Python字符串详解与示例(python字符串的常见操作)
- 04-11java正则-取出指定字符串之间的内容
- 04-11String s1 = new String("abc");这句话创建了几个字符串对象?
- 04-11java判断字符串中是否包含某个字符
- 04-11关于java开发中正确的发牌逻辑编写规范
- 最近发表
-
- Java面试“字符串三兄弟”String、StringBuilder、StringBuffer
- Java中你知道几种从字符串中找指定的字符的数量
- 探秘Java面试中问的最多的String、StringBuffer、StringBuilder
- Python字符串详解与示例(python字符串的常见操作)
- java正则-取出指定字符串之间的内容
- String s1 = new String("abc");这句话创建了几个字符串对象?
- java判断字符串中是否包含某个字符
- 关于java开发中正确的发牌逻辑编写规范
- windows、linux如何后台运行jar(并且显示进程名)
- 腾讯大佬私人收藏,GitHub上最受欢迎的100个JAVA库,值得学习
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)