UNPKG

@pilag6/csv-downloader

Version:

Lightweight CSV export utility for Vue and React

42 lines (34 loc) 965 B
export interface DownloadCSVOptions { headers: string[]; contents: (string | number)[][]; filename?: string; // Default: data.csv separator?: string; // Default: , bom?: boolean; // Default: true (para Excel) } export function downloadCSV({ headers, contents, filename = 'data.csv', separator = ',', bom = true }: DownloadCSVOptions) { const escape = (val: string | number) => `"${String(val).replace(/"/g, '""')}"`; const csvRows = [ headers.map(escape).join(separator), ...contents.map((row) => row.map(escape).join(separator)) ]; let csvContent = csvRows.join('\n'); if (bom) { csvContent = '\uFEFF' + csvContent; } const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' }); const url = URL.createObjectURL(blob); const link = document.createElement('a'); link.href = url; link.download = filename; document.body.appendChild(link); link.click(); document.body.removeChild(link); URL.revokeObjectURL(url); }