2021-05-11 13:34:23 +02:00
|
|
|
/**
|
|
|
|
* Exports data to a CSV format and provides a download file.
|
|
|
|
*
|
|
|
|
* @param arrayData - An array of data to be converted to CSV format.
|
|
|
|
* @param filename - The name of the file to be downloaded.
|
|
|
|
* @param delimiter - The delimiter to be used when converting to CSV format.
|
|
|
|
* Defaults to commas.
|
|
|
|
*/
|
2021-04-29 19:10:39 +02:00
|
|
|
function exportCsv(arrayData: Array<any>, filename: string, delimiter: string = ','): void {
|
2021-04-07 11:24:32 +02:00
|
|
|
if (arrayData === undefined || arrayData.length === 0) {
|
|
|
|
alert('No data to be exported!');
|
|
|
|
return;
|
|
|
|
}
|
2021-04-29 19:10:39 +02:00
|
|
|
let csv: string = Object.keys(arrayData[0]).join(delimiter) + '\n';
|
2021-05-10 18:15:25 +02:00
|
|
|
arrayData.forEach((obj) => {
|
2021-04-29 19:10:39 +02:00
|
|
|
const row: Array<any> = [];
|
2021-03-24 14:26:51 +01:00
|
|
|
for (const key in obj) {
|
|
|
|
if (obj.hasOwnProperty(key)) {
|
|
|
|
row.push(obj[key]);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
csv += row.join(delimiter) + '\n';
|
|
|
|
});
|
|
|
|
|
2021-05-10 18:15:25 +02:00
|
|
|
const csvData: Blob = new Blob([csv], { type: 'text/csv' });
|
2021-04-29 19:10:39 +02:00
|
|
|
const csvUrl: string = URL.createObjectURL(csvData);
|
2021-03-24 14:26:51 +01:00
|
|
|
|
2021-04-29 19:10:39 +02:00
|
|
|
const downloadLink: HTMLAnchorElement = document.createElement('a');
|
2021-03-24 14:26:51 +01:00
|
|
|
downloadLink.href = csvUrl;
|
|
|
|
downloadLink.target = '_blank';
|
|
|
|
downloadLink.download = filename + '.csv';
|
|
|
|
downloadLink.style.display = 'none';
|
|
|
|
document.body.appendChild(downloadLink);
|
|
|
|
downloadLink.click();
|
|
|
|
}
|
|
|
|
|
2021-05-11 13:34:23 +02:00
|
|
|
/** @exports */
|
2021-05-10 18:15:25 +02:00
|
|
|
export { exportCsv };
|