KevinChen 发表于 2020-3-19 15:59:13

怎样单击导出页面上加载的多个workbook实例?

背景:当一个页面上包含多个Workbook表单时,怎样才能一键导出所有Workbook的Excel文档?

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

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

            var fileName = "spread";
            for(let i=0; i<spreads.length; i++) {
                var spread = spreads;
                let file = "";
                var json = spread.toJSON();
                // 正常执行excelIo的逻辑即可
                excelIo.save(json, function (blob) {
                  file = blob;
                  // 在此处把文件的blob流打包到zip里
                  zip.file(fileName + (i+1) + ".xlsx", file);
                }, function (e) {
                  console.log(e);
                }, {password: ""});
            }

            // 定时器,每500毫秒检查一下是否完成了文件导出操作。
            var intervalId = setInterval(function () {
                var files = zip.files;
                var len = 0;
                for(let file in files){
                  len ++;
                }
                if(len === spreads.length){
                  // 利用FileSaver的saveAs下载打包好的压缩包
                  zip.generateAsync({type:"blob"}).then(content => {
                        saveAs(content, "spreads.zip");
                  });
                  clearInterval(intervalId);
                }
            }, 500);

完整示例请参考附件。
页: [1]
查看完整版本: 怎样单击导出页面上加载的多个workbook实例?