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
JavaScript
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');
};