Wilson.Zhang 发表于 2024-10-31 18:08:51

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]
查看完整版本: SpreadJS 导出功能拓展:大文件压缩导出的实现方法与效果