можем ли мы использовать JSZip с Angular7Csv для архивирования нескольких файлов csv? - PullRequest
1 голос
/ 18 июня 2020

ниже - это код для загрузки файла CSV в формате zip, но я не уверен, поддерживает ли он или нет, когда мы используем оба плагина одновременно, потому что я получаю эту ошибку: не могу прочитать данные 'pdfs / [object Object]' . Это поддерживаемый тип JavaScript (String, Blob, ArrayBuffer, et c)? в 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?

1 Ответ

1 голос
/ 30 июня 2020

Нет! Angularcsv - это независимый пакет, используемый только для загрузки файла в формате csv. Он автоматически конвертирует ваши данные в формат, разделенный запятыми, вместе с вашим заголовком. После обработки ваших данных new AngularCsv (data, 'My Report'); эта строка инициирует загрузку и скачивание файла. Для получения дополнительной информации https://www.npmjs.com/package/angular7-csv

Теперь, чтобы перейти к вашему вопросу, вы можете добиться функциональности файла csv в zip-папке традиционным способом кода

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);  
         }  
    }); 
}
...