SpreadJS 导出功能拓展:大文件压缩导出的实现方法与效果
SpreadJS支持直接导出的文件格式包括ssjson、sjs、excel、csv、pdf等,而完成导出任务的是第三方组件FileSaver.js。在一些数据量巨大的业务场景中,可能每张Worksheet中容纳了大规模数据,叠加起来使得Workbook文件超大。那么,可否在导出时将文件压缩,以此规避大文件传输。先来看下SpreadJS官网API文档中关于Workbook:save()的介绍,如图1所示,第三方组件FileSaver.js的saveAs方法接受的文件参数类型为blob流。那么,如果在传递给saveAs执行导出前将Workbook文件压缩,并转换为blob流对象,是否就能成功导出为压缩文件呢?话不多说,说干就干。
图1. Workbook:save()详情
通过如下代码组织导出压缩文件的逻辑,运行效果如图2所示。附上demo,以供参考。
spread.export(function (blob) {
const zip = new JSZip();
// 将 Blob 添加到 ZIP 文件中
zip.file('example.xlsx', blob);
// 生成 ZIP 文件
zip.generateAsync({ type: 'blob' }).then((content) => {
// 下载 ZIP 文件
saveAs(content, 'spreads.zip');
});
}, function (e) {
console.log(e);
}, {
fileType: GC.Spread.Sheets.FileType.excel
});
图2. 导出压缩文件
问题原帖:https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=228507
页:
[1]