Skip to content
Snippets Groups Projects

Draft: added excel download button to the pages

10 files
+ 1752
1261
Compare changes
  • Side-by-side
  • Inline
Files
10
import React from 'react';
import * as XLSX from 'xlsx';
interface DownloadExcelProps {
data: any[];
filename?: string;
sheetName?: string;
}
function convertToExcel(jsonData: any[], sheetName= "Sheet1"): Blob {
const ws = XLSX.utils.json_to_sheet(jsonData);
const wb = XLSX.utils.book_new();
XLSX.utils.book_append_sheet(wb, ws, sheetName);
const wbout = XLSX.write(wb, { bookType: 'xlsx', type: 'binary' });
const buffer = new ArrayBuffer(wbout.length);
const view = new Uint8Array(buffer);
for (let i = 0; i < wbout.length; i++) {
view[i] = wbout.charCodeAt(i) & 0xFF;
}
return new Blob([buffer], { type: 'application/octet-stream' });
}
const DownloadExcelButton: React.FC<DownloadExcelProps> = ({ data, filename = 'data.xlsx', sheetName }) => {
const downloadExcel = () => {
const blob = convertToExcel(data, sheetName);
const link = document.createElement('a');
link.href = URL.createObjectURL(blob);
link.download = filename;
document.body.appendChild(link);
link.click();
document.body.removeChild(link);
}
return (
<>
<button onClick={downloadExcel}>Download Excel</button>
</>
);
}
export default DownloadExcelButton;
Loading