30 lines
870 B
JavaScript
30 lines
870 B
JavaScript
function exportToCsv(filename, data) {
|
|
if (!data || data.length === 0) {
|
|
alert('No data to export.');
|
|
return;
|
|
}
|
|
|
|
const headers = Object.keys(data[0]);
|
|
const csvRows = [];
|
|
csvRows.push(headers.join(','));
|
|
|
|
for (const row of data) {
|
|
const values = headers.map(header => {
|
|
const escaped = ('' + row[header]).replace(/"/g, '"');
|
|
return `"${escaped}"`;
|
|
});
|
|
csvRows.push(values.join(','));
|
|
}
|
|
|
|
const csvString = csvRows.join('\n');
|
|
const blob = new Blob([csvString], { type: 'text/csv' });
|
|
const url = window.URL.createObjectURL(blob);
|
|
|
|
const a = document.createElement('a');
|
|
a.setAttribute('hidden', '');
|
|
a.setAttribute('href', url);
|
|
a.setAttribute('download', filename);
|
|
document.body.appendChild(a);
|
|
a.click();
|
|
document.body.removeChild(a);
|
|
} |