我们可以将 JSZip 与 Angular7Csv 一起用于压缩多个 csv 文件吗?

can we use JSZip with Angular7Csv for zipping the multiple csv file?

下面是下载 zip 格式的 csv 文件的代码,但我不确定当我们同时使用这两个插件时它是否支持,因为我收到此错误:无法读取 'pdfs/[object Object]' 的数据。它是受支持的 JavaScript 类型(String、Blob、ArrayBuffer 等)吗? 在 jszip.js:3472

import { AngularCsv } from 'angular7-csv';

var data = [
  {
    name: "Test 1",
    age: 13,
    average: 8.2,
    approved: true,
    description: "using 'Content here, content here' "
  },
  {
    name: 'Test 2',
    age: 11,
    average: 8.2,
    approved: true,
    description: "using 'Content here, content here' "
  },
];

this.reportCSV =new AngularCsv(data, 'My Report');


 downloadZip() {
    var zip = new JSZip();

    var pdf = zip.folder("Reports");


    this.reportCSV.forEach((i) => {
      pdf.file(i+'.csv', { base64: true });
    });

    zip.generateAsync({ type: "blob" }).then(function (content) {
      FileSaver.saveAs(content, "example.zip");
    });
  }

需要在代码中添加一些东西,或者无法将 angular7csv 与 jsZip 结合使用?

没有! Angularcsv 是独立包,只用于下载csv 格式文件。它会自动将您的数据与您的 header 一起转换为逗号分隔格式。处理数据后 new AngularCsv(data, 'My Report'); 此行触发下载并下载文件。欲了解更多信息 https://www.npmjs.com/package/angular7-csv

现在回答你的问题,你可以通过传统的代码方式实现 zip 文件夹中的 csv 文件功能

const header = ["name","age","average","approved","description"];
const replacer = (key, values) => values === null ? '' : values // specify how you want to handle null values here
this.csvdata = items.map(row => header.map(fieldName => JSON.stringify(row[fieldName], replacer)).join(','))
this.csvdata.unshift(header.join(','));
this.csvdata = this.csvdata.join('\r\n');

并将 this.csvdata 传递给 downloadzip() 方法

downloadZip()
{      
    zip.file("Myfile", this.csvdata);
    zip.generateAsync({ type: 'blob' }).then((content) => {  
       if (content) {  
            FileSaver.saveAs(content, name);  
         }  
    }); 
}