UNPKG

pagamio-frontend-commons-lib

Version:

Pagamio library for Frontend reusable components like the form engine and table container

42 lines (41 loc) 1.48 kB
import jsPDF from 'jspdf'; import 'jspdf-autotable'; import Papa from 'papaparse'; import * as XLSX from 'xlsx'; // CSV Export export const exportToCsv = (data, columns) => { const columnKeys = columns.map((col) => col.accessorKey); const csvData = data.map((row) => columnKeys.reduce((acc, key) => { acc[key] = row[key]; return acc; }, {})); const csvContent = Papa.unparse(csvData); const blob = new Blob([csvContent], { type: 'text/csv;charset=utf-8;' }); const link = document.createElement('a'); link.href = URL.createObjectURL(blob); link.download = 'export.csv'; link.click(); }; // XLSX Export export const exportToXlsx = (data, columns) => { const columnKeys = columns.map((col) => col.accessorKey); const xlsxData = data.map((row) => columnKeys.reduce((acc, key) => { acc[key] = row[key]; return acc; }, {})); const worksheet = XLSX.utils.json_to_sheet(xlsxData); const workbook = { Sheets: { data: worksheet }, SheetNames: ['data'] }; XLSX.writeFile(workbook, 'export.xlsx'); }; // PDF Export export const exportToPdf = (data, columns) => { const columnHeaders = columns.map((col) => col.header); const columnKeys = columns.map((col) => col.accessorKey); const pdfData = data.map((row) => columnKeys.map((key) => row[key])); const doc = new jsPDF(); doc.autoTable({ head: [columnHeaders], body: pdfData, }); doc.save('export.pdf'); };