Экспорт json в csv, xls

205
28 апреля 2018, 17:54

Есть json:

Необходимо его экспортировать в .csv (или в любой другой формат, который exel мог бы без проблем открывать). Желательно без использования сторонних библиотек

Answer 1
  1. Формируете массив строк, в которых значения полей объектов разделены ; или ,1 (и с добавлением каждой строке завершающих \r\n).
    При необходимости2, заключаете значение в двойные кавычки

  2. Создаете экземпляр Blob, передав конструктору сформированный массив и указав text/csv в строке параметра type (MIME-тип)

  3. Получаете URL на экземпляр Blob статическим методом URL.createObjectURL()

  4. Делаете с URL все что сочтете нужным.

1 Excel использует в качестве разделителя запятую.
2 В том случае, когда значение строковое, и содержит символы разделителя или перевода строки. Если значение при этом содержит еще и кавычки, то они должны быть удвоены: "qwe ""rty"" uio" - это можно сделать методом String.replace().

let data = rndObjArr(50),  
    csvRows = [],  
    blob;  
data.forEach(o => csvRows.push(`${o.date},${o.count}\r\n`));  
blob = new Blob(csvRows, { type: 'text/csv;charset=utf-8;' }); 
document.body.insertAdjacentHTML('beforeend', ` 
  <a href="${URL.createObjectURL(blob)}" download="export.csv">Скачать CSV</a> 
`);  
 
function rndObjArr(size) { 
  const rndInt = (from, to) => Math.floor(Math.random() * (to - from)) + from;  
  let result = [],  
      dateStr;  
  while (size--) { 
    dateStr = `${rndInt(2010, 2019)}-${String(rndInt(1, 13)).padStart(2, '0')}-${String(rndInt(1, 31)).padStart(2, '0')}`;  
    result.push({ date: dateStr, count: rndInt(0, 50) });  
  } 
  return result;  
}

READ ALSO
Вызов функции при загрузке данных в поле из сервера

Вызов функции при загрузке данных в поле из сервера

Есть такая структура select со странами загрузка данных стран с сервера

208
Нужно ли запускать npm install, если все пакеты установлены заранее?

Нужно ли запускать npm install, если все пакеты установлены заранее?

Нужно апдейтнуть проект на компах с запретом выхода в сетьВсе npm пакеты уже установлены, будет производиться только замена исполняющего...

185
GET запрос и ошибка CORS

GET запрос и ошибка CORS

Сделал GET запрос с помощью JS https://pastebincom/kcCdiRxe ,добавил CORS в заголовки,но все равно выводить ошибки в консоле

200
Кроссдоменный AJAX

Кроссдоменный AJAX

Чем плохо то, что сервер разрешит всем производить кроссдоменный ajax? Будем обрабатывать эти запросы так же, как и от обычных клиентов и все...

332