40 lines
1.0 KiB
TypeScript
40 lines
1.0 KiB
TypeScript
function exportCsv(arrayData: any[], filename: string, delimiter = ','): void {
|
|
if (arrayData === undefined || arrayData.length === 0) {
|
|
alert('No data to be exported!');
|
|
return;
|
|
}
|
|
const header = Object.keys(arrayData[0]).join(delimiter) + '\n';
|
|
let csv = header;
|
|
arrayData.forEach(obj => {
|
|
let row = [];
|
|
for (const key in obj) {
|
|
if (obj.hasOwnProperty(key)) {
|
|
row.push(obj[key]);
|
|
}
|
|
}
|
|
csv += row.join(delimiter) + '\n';
|
|
});
|
|
|
|
const csvData = new Blob([csv], {type: 'text/csv'});
|
|
const csvUrl = URL.createObjectURL(csvData);
|
|
|
|
let downloadLink = document.createElement('a');
|
|
downloadLink.href = csvUrl;
|
|
downloadLink.target = '_blank';
|
|
downloadLink.download = filename + '.csv';
|
|
downloadLink.style.display = 'none';
|
|
document.body.appendChild(downloadLink);
|
|
downloadLink.click();
|
|
}
|
|
|
|
function removeSpecialChar(str: string): string {
|
|
if (str === null || str === '') {
|
|
return '';
|
|
}
|
|
return str.replace(/[^a-zA-Z0-9 ]/g, '');
|
|
}
|
|
|
|
export {
|
|
exportCsv
|
|
};
|