背景:当一个页面上包含多个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[i];
- 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);
复制代码
完整示例请参考附件。
|
|