-
Notifications
You must be signed in to change notification settings - Fork 324
Excel流式导出
清沐 edited this page Aug 10, 2019
·
42 revisions
流式导出与默认导出不同之处在于:流式导出采用生产者消费者模式,允许分批获取数据,分批写入Excel,且默认采用SXSSF模式,内存占用量极低,真正意义上实现海量数据导出,另外,流式导出支持zip压缩包等独有特性。
使用流式导出分为三步:
- 导出配置
DefaultStreamExcelBuilder streamExcelBuilder = DefaultStreamExcelBuilder
.of(ArtCrowd.class)
.threadPool(Executors.newFixedThreadPool(10))// 线程池,可选
.capacity(10_000)// 容量设定,在主动划分excel使用,可选
.start();
- 数据追加
streamExcelBuilder.append(dataList);
- 完成构建
Workbook workbook = streamExcelBuilder.build();
附件导出示例:
try (DefaultStreamExcelBuilder streamExcelBuilder = DefaultStreamExcelBuilder
.of(ArtCrowd.class)
.threadPool(Executors.newFixedThreadPool(10))
.start();) {
// 多线程异步获取数据并追加至excel,join等待线程执行完成
List<CompletableFuture> futures = new ArrayList<>();
for (int i = 0; i < 100; i++) {
CompletableFuture future = CompletableFuture.runAsync(() -> {
List<ArtCrowd> dataList = this.getDataList();
// 数据追加
defaultExcelBuilder.append(dataList);
});
futures.add(future);
}
futures.forEach(CompletableFuture::join);
// 最终构建
Workbook workbook = defaultExcelBuilder.build();
AttachmentExportUtil.export(workbook, "艺术生信息", response);
}
多文件导出示例:
设置Excel容量(capacity(10_000))
DefaultStreamExcelBuilder defaultExcelBuilder = DefaultStreamExcelBuilder
.of(ArtCrowd.class)
.threadPool(Executors.newFixedThreadPool(10))
.capacity(10_000)
.start();
......
// 最终构建
List<Path> paths = defaultExcelBuilder.buildAsPaths();
// do something
zip导出示例:
设置Excel容量(capacity(10_000))
// 显式标明开始构建
DefaultStreamExcelBuilder defaultExcelBuilder = DefaultStreamExcelBuilder
.of(ArtCrowd.class)
.threadPool(Executors.newFixedThreadPool(10))
.capacity(10_000)
.start();
......
// 最终构建
Path zip = defaultExcelBuilder.buildAsZip("test");
AttachmentExportUtil.export(zip,"finalName.zip",response);
导出使用注解
- @ExcelTable(includeAllField,excludeParent,workbookType,sheetName,rowAccessWindowSize,useFieldNameAsTitle,defaultValue)
- @ExcludeColumn
- @ExcelColumn(title,order,dateFormatPattern,groups,defaultValue)
对应注解详情请见:注解
-
Overview
概述 -
FAQ
常见问题 -
Dependency adding
依赖添加 -
Excel/Csv import
Excel/Csv导入 - 一对多导入
-
Excel default export
默认导出 -
Excel streaming export
流式导出 -
Dynamic export
动态导出 -
Excel template build
模板构建 -
CSV export
csv导出 -
Multiple sheet import
多sheet导入 -
Multiple sheet export
多sheet导出 - 聚合列&聚合导出
-
Custom style
自定义样式 -
Multilevel header
多级表头 -
Wrap within cell
单元格内换行 -
Image export
图片导出 -
Image import
图片导入 -
Hyperlink
链接 - 读取链接
-
Template row height setting
模板行高度设置 -
Drop-down-list
下拉列表 -
Custom convert
写入自定义转化 -
Formula usage
公式使用 -
Template cell setting
单元格设置 -
Header freeze
区域冻结 - 提示
-
Style support
样式支持 - 添加水印
- 按列读取
- 单元格斜线绘制
- 设置批注
- 版本日志