import React, { useState } from 'react'; import { Button } from '@/components/ui/button'; import { Download } from 'lucide-react'; import { toast } from 'sonner'; import * as XLSX from 'xlsx'; const DownloadTemplateButton: React.FC = () => { const [isGenerating, setIsGenerating] = useState(false); const handleDownload = async () => { try { setIsGenerating(true); // Create workbook and worksheet const wb = XLSX.utils.book_new(); // Create header row const headers = [ 'Employee ID', 'Employee Name', 'Date', 'In Time', 'Out Time' ]; // Sample data with example rows const data = [ headers, [107, 'Milind Vaman Patil', '01-Mar-2025', '', ''], [107, 'Milind Vaman Patil', '04-Mar-2025', '11:07 AM', '07:16 PM'], [107, 'Milind Vaman Patil', '05-Mar-2025', '11:06 AM', '08:06 PM'], [176, 'Sharad Prahlad Bhadalkar', '03-Mar-2025', '10:17 AM', '07:23 PM'], [176, 'Sharad Prahlad Bhadalkar', '04-Mar-2025', '10:16 AM', '07:21 PM'], ]; // Create worksheet and add data const ws = XLSX.utils.aoa_to_sheet(data); // Set column widths const wscols = [ { wch: 15 }, // Employee ID { wch: 30 }, // Employee Name { wch: 15 }, // Date { wch: 15 }, // In Time { wch: 15 }, // Out Time ]; ws['!cols'] = wscols; // Add to workbook XLSX.utils.book_append_sheet(wb, ws, 'Attendance Template'); // Generate spreadsheet and download XLSX.writeFile(wb, 'attendance_template.xlsx'); toast.success('Template downloaded successfully'); } catch (error) { console.error('Error generating template:', error); toast.error('Failed to generate template. Please try again.'); } finally { setIsGenerating(false); } }; return ( ); }; export default DownloadTemplateButton;