Есть json:
Необходимо его экспортировать в .csv (или в любой другой формат, который exel мог бы без проблем открывать). Желательно без использования сторонних библиотек
Формируете массив строк, в которых значения полей объектов разделены ; или ,1 (и с добавлением каждой строке завершающих \r\n).
При необходимости2, заключаете значение в двойные кавычки
Создаете экземпляр Blob, передав конструктору сформированный массив и указав text/csv в строке параметра type (MIME-тип)
Получаете URL на экземпляр Blob статическим методом URL.createObjectURL()
Делаете с 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;
}
Как развивать веб-проекты в 2026 году: технологии, контент E-E-A-T и факторы доверия
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники