Конвертировать Blob в String, чтобы его можно было сохранить в CSV - PullRequest
0 голосов
/ 31 марта 2020

Я пытаюсь преобразовать некоторый объект в строку, поэтому я сохранил его в файл CSV.

Сейчас мой код с сохранением этих данных строки в файл .csv, и он будет работать.

csvdata = `Date,"First Name","Last Name","Email"
             08.22.2019,"Simon","Grimm","saimon@devdactic.com"
             08.21.2019,"Simon","Grimm","saimon@devdactic.com"
             08.19.2019,"Simon","Grimm","saimon@devdactic.com"
             08.18.2019,"Simon","Grimm","saimon@devdactic.com"
             08.17.2019,"Simon","Grimm","saimon@devdactic.com"
             08.16.2019,"Simon","Grimm","saimon@devdactic.com"`;

Моя проблема заключается в том, что мне нужно преобразовать массив объектов в вышеприведенное.

Поиск в Google Я прочитал, что могу преобразовать объект в BLOB-объект:

Так что я попробовал:

objToBlob() {
    const obj = {hello: 'world'};
    const blob = new Blob([JSON.stringify(obj, null, 2)], {type : 'text/csv;charset=utf-8;'});
    console.log(blob);
}

Но если я сделаю blob.toString(); и сохраню это в CSV-файл, я получу [Object Blob] внутри первой ячейки.

Так что это не работает.

Любые идеи о том, как я могу сделать это в моем csvData при сохранении в файле .csv, будут работать, но мне нужен объект, но при сохранении это должна быть строка.

Как я могу это сделать?

Я использую Angular / Ioni c 5 BTW.

1 Ответ

0 голосов
/ 31 марта 2020

Вы можете преобразовать объект в значения, разделенные запятыми, а затем использовать его точно так же, как вы использовали csvdata. Например:

const obj = {hello: 'world', hi: 'earth'}

const result = Object.keys(obj).map(key => key + ',' + obj[key])
console.log(result.join(" \n"))
/*
"hello,world 
hi,earth"
*/

Как видите, результат аналогичен вашим данным CSV

Обновление : если данные представляют собой массив:

const car = [ { make: 'Steve', model: 'Celica' }, { make: 'Porsche', model: 'Boxter' }, ];

const obj = {hello: 'world', hi: 'earth'}

const convertToCSV = (obj) => Object.keys(obj).map(key => key + ',' + obj[key]).join(" \n")

const result = car.map(x => convertToCSV(x)).join()

console.log(result)

/*
result:

"make,Steve 
model,Celica,make,Porsche 
model,Boxter"
*/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...