找回密码
 立即注册

QQ登录

只需一步,快速开始

Wilson.Zhang
超级版主   /  发表于:2024-10-31 18:08  /   查看:157  /  回复:0
SpreadJS支持直接导出的文件格式包括ssjson、sjs、excel、csv、pdf等,而完成导出任务的是第三方组件FileSaver.js。在一些数据量巨大的业务场景中,可能每张Worksheet中容纳了大规模数据,叠加起来使得Workbook文件超大。那么,可否在导出时将文件压缩,以此规避大文件传输。

先来看下SpreadJS官网API文档中关于Workbook:save()的介绍,如图1所示,第三方组件FileSaver.js的saveAs方法接受的文件参数类型为blob流。那么,如果在传递给saveAs执行导出前将Workbook文件压缩,并转换为blob流对象,是否就能成功导出为压缩文件呢?话不多说,说干就干。

1730280287760.png

图1. Workbook:save()详情


通过如下代码组织导出压缩文件的逻辑,运行效果如图2所示。附上demo,以供参考。

  1. spread.export(function (blob) {
  2.     const zip = new JSZip();
  3.     // 将 Blob 添加到 ZIP 文件中
  4.     zip.file('example.xlsx', blob);

  5.     // 生成 ZIP 文件
  6.     zip.generateAsync({ type: 'blob' }).then((content) => {
  7.             // 下载 ZIP 文件
  8.             saveAs(content, 'spreads.zip');
  9.         });
  10.     }, function (e) {
  11.         console.log(e);
  12.     }, {
  13.         fileType: GC.Spread.Sheets.FileType.excel
  14. });
复制代码

导出压缩文件.gif

图2. 导出压缩文件

问题原帖:https://gcdn.grapecity.com.cn/forum.php?mod=viewthread&tid=228507

导出压缩文件.html

4.92 KB, 下载次数: 12

0 个回复

您需要登录后才可以回帖 登录 | 立即注册
返回顶部