找回密码
 立即注册

QQ登录

只需一步,快速开始

KevinChen 讲师达人认证 悬赏达人认证 SpreadJS 开发认证
论坛元老   /  发表于:2020-3-19 15:59  /   查看:2711  /  回复:0
背景:当一个页面上包含多个Workbook表单时,怎样才能一键导出所有Workbook的Excel文档?

思路:
利用第三方jszip组件,把导出的Excel文件流压缩后,导出压缩包。

核心代码:
  1. const zip = new JSZip();
  2.             if(!zip && spreads.length === 0){
  3.                 return;
  4.             }

  5.             var fileName = "spread";
  6.             for(let i=0; i<spreads.length; i++) {
  7.                 var spread = spreads[i];
  8.                 let file = "";
  9.                 var json = spread.toJSON();
  10.                 // 正常执行excelIo的逻辑即可
  11.                 excelIo.save(json, function (blob) {
  12.                     file = blob;
  13.                     // 在此处把文件的blob流打包到zip里
  14.                     zip.file(fileName + (i+1) + ".xlsx", file);
  15.                 }, function (e) {
  16.                     console.log(e);
  17.                 }, {password: ""});
  18.             }

  19.             // 定时器,每500毫秒检查一下是否完成了文件导出操作。
  20.             var intervalId = setInterval(function () {
  21.                 var files = zip.files;
  22.                 var len = 0;
  23.                 for(let file in files){
  24.                     len ++;
  25.                 }
  26.                 if(len === spreads.length){
  27.                     // 利用FileSaver的saveAs下载打包好的压缩包
  28.                     zip.generateAsync({type:"blob"}).then(content => {
  29.                         saveAs(content, "spreads.zip");
  30.                     });
  31.                     clearInterval(intervalId);
  32.                 }
  33.             }, 500);
复制代码


完整示例请参考附件。

SpreadJS单次点击下载多个Excel的打包文件.html

5.59 KB, 下载次数: 26

0 个回复

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