MMCT TEAM
Server IP : 103.191.208.50  /  Your IP : 216.73.216.53
Web Server : LiteSpeed
System : Linux orion.herosite.pro 4.18.0-553.53.1.lve.el8.x86_64 #1 SMP Wed May 28 17:01:02 UTC 2025 x86_64
User : celkcksm ( 1031)
PHP Version : 7.4.33
Disable Function : show_source, system, shell_exec, passthru, popen, exec
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON
Directory (0755) :  /home/celkcksm/ecampus.ncriptech.com/application/controllers/../helpers/

[  Home  ][  C0mmand  ][  Upload File  ]

Current File : /home/celkcksm/ecampus.ncriptech.com/application/controllers/../helpers/excel_helper.php
<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
 
require_once APPPATH."/third_party/vendor/autoload.php";

use PhpOffice\PhpSpreadsheet\IOFactory;
use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Style\Font;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Cell\Coordinate;
use PhpOffice\PhpSpreadsheet\Worksheet\Drawing;
use PhpOffice\PhpSpreadsheet\Writer\Pdf\Mpdf;
use PhpOffice\PhpSpreadsheet\Shared\Date;

function read_excel($inputFileName,$inputFileType='Xls'){

	try {

		if(file_exists($file_path)){
			// Create a new Reader of the type defined in $inputFileType
			$reader = IOFactory::createReader($inputFileType);
			
			/** Load $inputFileName to a Spreadsheet Object  **/
			$spreadsheet = $reader->load($inputFileName);
			
			$sheetData = $spreadsheet->getActiveSheet()->toArray(null, true, true, true);

			return $sheetData;
		}else{
			return $inputFileName.' not found';
		}
			
	} catch (ReaderException $e) {
		return $e->getMessage();
	}
}

function read_excel_active_sheet($inputFileName,$inputFileType='Xls'){

	try {

		if(file_exists($inputFileName)){
			// Create a new Reader of the type defined in $inputFileType
			$reader = IOFactory::createReader($inputFileType);
			
			/** Load $inputFileName to a Spreadsheet Object  **/

			$spreadsheet = $reader->load($inputFileName);

			return $spreadsheet->getActiveSheet();

			//return $spreadsheet->getActiveSheet()->getCellByColumnAndRow(2, 2)->getValue();
		}else{
			return $inputFileName.' not found';
		}
			
	} catch (ReaderException $e) {
		return $e->getMessage();
	}
}


function write_excel_active_sheet($inputData=array(),$outputFile='',$outputType='download',$inputFileType='Xlsx'){

	try {

		$inputFileName=FCPATH.'uploads/app/samples/admission_income_report.xlsx';
		$file_name=$outputFile.'.xlsx';

		if(!empty($outputFile) && file_exists($inputFileName)){
			// Create a new Reader of the type defined in $inputFileType
			$reader = IOFactory::createReader($inputFileType);
			
			/** Load $inputFileName to a Spreadsheet Object  **/

			$spreadsheet = $reader->load($inputFileName);

			$sheet = $spreadsheet->getActiveSheet();

			// Write data to cells

			if(is_array($inputData) && !empty($inputData)){

				//print_obj($inputData);die;
				$i=1;
				foreach ($inputData as $key => $value) {

					foreach ($value as $k => $v) {
						$sheet->setCellValue($k, $v);
					}

					$i++;
					
				}	

				// $SUMRANGE = 'L2:L'.$i;
				// $sheet->setCellValue('L'.$i+1 , '=SUM($SUMRANGE)');			

				//die;

				// Save the spreadsheet
				$writer = new Xlsx($spreadsheet);

				if($outputType=='download'){
					header('Content-Type: application/vnd.ms-excel');
					header('Content-Disposition: attachment;filename="'. $filename .'.xlsx"'); 
					header('Cache-Control: max-age=0');					
					$writer->save('php://output');
				}else if($outputType=='save'){
					$file_path_to_save=FCPATH.'uploads/temp_files/'.$file_name;
					$writer->save($file_path_to_save);
				}

				return $file_name.' has been created';

			}else{
				return 'No data given to write to excel.';
			}

				

		}else{
			return $inputFileName.' not found';
		}
	} catch (ReaderException $e) {
		return $e->getMessage();
	}
}




function write_excel_to_pdf($inputFileName,$inputData,$imageData,$outputPath,$inputFileType='Xlsx'){
	try {

		if(file_exists($inputFileName)){
			// Create a new Reader of the type defined in $inputFileType
			$reader = IOFactory::createReader($inputFileType);
			
			/** Load $inputFileName to a Spreadsheet Object  **/

			$spreadsheet = $reader->load($inputFileName);

			$sheet=$spreadsheet->getActiveSheet();
			
			if(is_array($imageData) && !empty($imageData)){
				foreach ($imageData as $key => $value) {
					$drawing = new Drawing();
					$drawing->setName('UserImage');
					$drawing->setDescription('UserImage');
					$drawing->setPath($value['image_path']); // put your path and image here
					$drawing->setCoordinates($value['image_coordinate']);
					$drawing->setWidthAndHeight(127.68, 119.04);
					$drawing->setOffsetX(25);
					$drawing->setOffsetY(35);
					//$drawing->setRotation(25);
					$drawing->getShadow()->setVisible(true);
					$drawing->getShadow()->setDirection(90);
					$drawing->setWorksheet($sheet);	
				}
			}

			// if(is_array($logoData) && !empty($logoData)){
			// 	foreach ($logoData as $key => $value) {
			// 		$drawing = new Drawing();
			// 		$drawing->setName('CollegeImage');
			// 		$drawing->setDescription('CollegeImage');
			// 		$drawing->setPath($value['image_path']); // put your path and image here
			// 		$drawing->setCoordinates($value['image_coordinate']);
			// 		$drawing->setWidthAndHeight((int)$value['image_coordinate'], (int)$value['image_coordinate']);
			// 		$drawing->setOffsetX(25);
			// 		$drawing->setOffsetY(35);
			// 		//$drawing->setRotation(25);
			// 		$drawing->getShadow()->setVisible(true);
			// 		$drawing->getShadow()->setDirection(90);
			// 		$drawing->setWorksheet($sheet);
			// 	}					
			// }

			if(is_array($inputData) && !empty($inputData)){
				$i=1;
				foreach ($inputData as $key => $value) {

					foreach ($value as $k => $v) {
						$sheet->setCellValue($k, $v);
					}

					$i++;					
				}
			}

			$writer = new Xlsx($spreadsheet);

			$file_path_to_save=FCPATH.'uploads/temp_files/'.$outputPath.'.xlsx';
			$writer->save($file_path_to_save);

			

			// $writer = new Mpdf($spreadsheet);
			// $writer->save($outputPath."05featuredemo.pdf");

			//return $spreadsheet->getActiveSheet()->getCellByColumnAndRow(2, 2)->getValue();
		}else{
			return $inputFileName.' not found';
		}
			
	} catch (ReaderException $e) {
		return $e->getMessage();
	}
}



function write_excel($headingdata=array(),$inputData=array(),$file_name=''){

	try {

		if(!empty($headingdata) && !empty($inputData)){
			// Create a new spreadsheet
			$spreadsheet = new Spreadsheet();

			// Get the active sheet
			$sheet = $spreadsheet->getActiveSheet();

			// Create bold font
			$boldFont = (new Font())->setBold(true);

			// Add data to the sheet

			if(!empty($headingdata)){
				foreach ($headingdata as $key => $value) {
					$sheet->setCellValue($key, $value);
				}

				// Get the first key
				$first_key = reset(array_keys($headingdata));

				// Get the last key
				$last_key = end(array_keys($headingdata));

				// Apply bold font to first row
				$sheet->getStyle("$first_key:$last_key")->getFont()->applyFromArray(['font' => $boldFont]);
			}			

			if(!empty($inputData)){
				foreach ($inputData as $key => $value) {
					foreach ($value as $k => $v) {
						$sheet->setCellValue($k, $v);
					}					
				}
			}

			// Save the spreadsheet as an XLSX file
			$writer = new Xlsx($spreadsheet);
			if(!empty($file_name)){
				$file_path_to_save=FCPATH.'uploads/temp_files/'.$file_name;
			}else{
				$file_path_to_save=FCPATH.'uploads/temp_files/'.date('YmdHis').'_temp.xlsx';
			}
			
			$writer->save($file_path_to_save);

			// Force download
			// header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
			// header('Content-Disposition: attachment;filename=""'. urlencode($file_name).'"');
			// header('Cache-Control: max-age=0');
			// $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx');
			// $writer->save('php://output');
			// exit;

			$return['success']= $file_name.' has been created';
		}else{
			$return['error']= 'No file generated';
		}
	} catch (Exception $e) {
		$return['error']= $e->getMessage();
	}

	return $return;

}


function __write_excel($headingdata = array(), $inputData = array(), $file_name = '')
{
    try {
        if (!empty($headingdata) && !empty($inputData)) {
            // Create a new Spreadsheet object
            $spreadsheet = new \PhpOffice\PhpSpreadsheet\Spreadsheet();
            $sheet = $spreadsheet->getActiveSheet();

            // Add headings to the first row
            $colIndex = 1; // Start from column A (1 corresponds to "A")
            foreach ($headingdata as $heading) {
                $sheet->setCellValueByColumnAndRow($colIndex, 1, $heading); // Row 1 for headings
                $colIndex++;
            }

            // Add data rows starting from the second row
            $rowIndex = 2; // Data rows start from the second row
            foreach ($inputData as $row) {
                $colIndex = 1; // Reset column index for each row
                foreach ($row as $cellValue) {
                    $sheet->setCellValueByColumnAndRow($colIndex, $rowIndex, $cellValue);
                    $colIndex++;
                }
                $rowIndex++;
            }

            // Save the spreadsheet to a file
            $file_path_to_save = FCPATH . 'uploads/temp_files/' . ($file_name ?: date('YmdHis') . '_temp.xlsx');
            $writer = new \PhpOffice\PhpSpreadsheet\Writer\Xlsx($spreadsheet);
            $writer->save($file_path_to_save);

            return [
                'success' => true,
                'file_url' => base_url('uploads/temp_files/' . basename($file_path_to_save))
            ];
        } else {
            return ['success' => false, 'error' => 'Heading data or input data is empty'];
        }
    } catch (Exception $e) {
        return ['success' => false, 'error' => $e->getMessage()];
    }
}




function _write_excel($imageData){
	// Load the Excel file
	$spreadsheet = IOFactory::load(FCPATH."/uploads/app/samples/student_details.xlsx");

	// Set active sheet to the first sheet
	$sheet = $spreadsheet->getActiveSheet();

	$firstRow = 5;


	if(!empty($imageData)){
		foreach ($imageData as $key => $value) {
			$sheet->setCellValueByColumnAndRow($firstRow, $firstRow, $value);
			$firstRow++;
		}
	}
	// Write the file
	$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
	$writer->save(FCPATH."/uploads/app/samples/student_details.xlsx");
}


function write_html_excel($htmlString,$file_name){

	$reader = new \PhpOffice\PhpSpreadsheet\Reader\Html();
	$spreadsheet = $reader->loadFromString($htmlString);

	$writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
	$writer->save(FCPATH."/uploads/temp_files/{$file_name}.xlsx");

	return base_url("uploads/temp_files/{$file_name}.xlsx");
}




function download()
{
	$spreadsheet = new Spreadsheet();
	$sheet = $spreadsheet->getActiveSheet();
	$sheet->setCellValue('A1', 'Hello World !');
	
	$writer = new Xlsx($spreadsheet);

	$filename = 'name-of-the-generated-file';

	header('Content-Type: application/vnd.ms-excel');
	header('Content-Disposition: attachment;filename="'. $filename .'.xlsx"'); 
	header('Cache-Control: max-age=0');
	
	$writer->save('php://output'); // download file 

}

function validate_admission_excel_v1($inputFileName, $inputFileType = 'Xls', $rows_limit = 200) {
    $sheet_data = read_excel_active_sheet($inputFileName, $inputFileType);

    if (!empty($sheet_data)) {
        $expected_headers = array(
            'Sl No',
            'First Name', 
            'Middle Name',
            'Last Name',
            'DOB(YYYY/MM/DD)',
            'Gender',
            'Blood Group',
            'Aadhar',
            'Phone',
            'Whatsapp',
            'Email',
            'Permanent Address',
            'City/Village',
            'District',
            'P.O',
            'P.S',
            'State',
            'Pin Code',
			'Admission Date(YYYY/MM/DD)',
            'Course',
			'Course Fee',
			'Seat Booking Fee',
			'1st Installment',
			'Due Date(YYYY/MM/DD)',
			'Payment Date(YYYY/MM/DD)',
			'2nd Installment',
			'Due Date(YYYY/MM/DD)',
			'Payment Date(YYYY/MM/DD)',
			'3rd Installment',
			'Due Date(YYYY/MM/DD)',
			'Payment Date(YYYY/MM/DD)',
			'4th Installment',
			'Due Date(YYYY/MM/DD)',
			'Payment Date(YYYY/MM/DD)',
            '5th Installment',
            'Due Date(YYYY/MM/DD)',
            'Payment Date(YYYY/MM/DD)',
            '6th Installment',
			'Due Date(YYYY/MM/DD)',
			'Payment Date(YYYY/MM/DD)',
			'7th Installment',
			'Due Date(YYYY/MM/DD)',
			'Payment Date(YYYY/MM/DD)',
			'8th Installment',
			'Due Date(YYYY/MM/DD)',
			'Payment Date(YYYY/MM/DD)',
			'Agent Fee',
			'Agent Code'
        );

        $firstColumnIndex = Coordinate::columnIndexFromString('A');
        $lastColumnIndex = Coordinate::columnIndexFromString('AV');
        
        $firstRow = 3;
        $data = [];
        $i = 0;
        for ($col = $firstColumnIndex; $col <= $lastColumnIndex; ++$col) {
            $data[$i] = trim($sheet_data->getCellByColumnAndRow($col, $firstRow)->getValue());
            $i++;
        }

        // Check if the headers match
        if ($expected_headers === $data) {
            $firstRow = 4;
            $lastRow = $sheet_data->getHighestRow();
            $exceldata = [];

            if ($lastRow <= $rows_limit) {
                for ($row = $firstRow; $row <= $lastRow; ++$row) {
                    for ($col = $firstColumnIndex; $col <= $lastColumnIndex; ++$col) {
                        $exceldata[$row][$col] = $sheet_data->getCellByColumnAndRow($col, $row)->getValue();
                    }
                }

                foreach ($exceldata as $_key => $_value) {
                    if (!empty($_value)) {
                        $_exceldata[] = array_filter($_value);
                    }
                }

                return ['validated' => 200, 'exceldata' => $_exceldata];
            } else {
                return ['validated' => 400, 'error' => 'More than ' . $rows_limit . ' rows cannot be processed at once.'];
            }
        } else {
            // Find the mismatched headers
            $mismatched_headers = [];
            foreach ($expected_headers as $index => $header) {
                if (isset($data[$index]) && $data[$index] !== $header) {
                    $mismatched_headers[] = "Expected '{$header}' but found '{$data[$index]}' at position " . ($index + 1);
                } elseif (!isset($data[$index])) {
                    $mismatched_headers[] = "Expected '{$header}' but found nothing at position " . ($index + 1);
                }
            }

            return [
                'validated' => 400,
                'error' => 'Excel data format headings are incorrect. Please download the sample excel for your reference.',
                'mismatched_headers' => $mismatched_headers
            ];
        }
    } else {
        return ['validated' => 400, 'error' => 'Sheet data error'];
    }
}


function validate_admission_excel($inputFileName, $inputFileType = 'Xls', $rows_limit = 200,$excel_type=1) {

    $sheet_data = read_excel_active_sheet($inputFileName, $inputFileType);

    if (!empty($sheet_data)) {
		if($excel_type==1){
			$expected_headers = [
				'Sl No', 'First Name', 'Middle Name', 'Last Name', 'Father', 'Mother',
				'DOB(DD/MM/YYYY)', 'Gender', 'CASTE', 'Blood Group', 'Aadhar',
				'Phone', 'Guardian Phone', 'Whatsapp', 'Email', 'Permanent Address', 'City/Village',
				'District', 'P.O', 'P.S', 'State', 'Pin Code', 'Qualification', 'TOTAL MARKS',
				'MARKS OBTAINED', 'PERCENTAGE', 'BOARD', 'School/ITI Name', 'YEAR OF PASS',
				'Course', 'Course Lateral', 'Fee', 'Admission Date(DD/MM/YYYY)', 'Seat Booking Fee', 'Admission fees',
				'Discount', 
				'1st Sem', 
				'Due Date(DD/MM/YYYY)', 
				'Payment Date(DD/MM/YYYY)',
				'Paid(Y/N)',
				'2nd Sem', 
				'Due Date(DD/MM/YYYY)', 
				'Payment Date(DD/MM/YYYY)',
				'Paid(Y/N)',
				'3rd Sem', 
				'Due Date(DD/MM/YYYY)', 
				'Payment Date(DD/MM/YYYY)',
				'Paid(Y/N)',
				'4th Sem', 
				'Due Date(DD/MM/YYYY)', 
				'Payment Date(DD/MM/YYYY)',
				'Paid(Y/N)',
				'5th Sem', 
				'Due Date(DD/MM/YYYY)', 
				'Payment Date(DD/MM/YYYY)',
				'Paid(Y/N)',
				'6th Sem', 
				'Due Date(DD/MM/YYYY)', 
				'Payment Date(DD/MM/YYYY)',
				'Paid(Y/N)', 
				'7th Sem', 
				'Due Date(DD/MM/YYYY)', 
				'Payment Date(DD/MM/YYYY)',
				'Paid(Y/N)',
				'8th Sem', 
				'Due Date(DD/MM/YYYY)', 
				'Payment Date(DD/MM/YYYY)',
				'Paid(Y/N)',
				'Agent Fee', 
				'Agent Code'
			];		

			$firstColumnIndex = Coordinate::columnIndexFromString('A');
			$lastColumnIndex = Coordinate::columnIndexFromString('BR');
		}else if($excel_type==2){
			$expected_headers=["Sl No", "Admission Date(DD/MM/YYYY)", "Course (B.Ed / D.Ed)", "Method", "2nd Method", "Batch", "First Name", "Middle Name", "Last Name", "Father", "Mother", "DOB (DD/MM/YYYY)", "Gender", "Caste", "Blood Group", "Collage Roll Number", "Enrollment", "Registration Number", "Aadhar", "Pan Number", "Phone", "Guardian Phone", "Whatsapp", "Email", "Permanent Address", "City/Village", "District", "P.O", "P.S", "State", "Pin Code", "Last Qualification", "Passing Year", "TOTAL MARKS", "MARKS OBTAINED", "PERCENTAGE/CGPA", "Subjects", "(HONOURS/PASS ) WITH SUBJECT", "BOARD / UNIVERSITY", "School/ITI Name", "YEAR OF PASS", "Course Fee", "Seat Bookig Date", "Seat Booking Fee", "Admission fees", "Discount", "1st Installment", "Due Date(DD/MM/YYYY)", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "2nd Installment", "Due Date(DD/MM/YYYY)", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "3rd Installment", "Due Date(DD/MM/YYYY))", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "4th Installment", "Due Date(DD/MM/YYYY)", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "5th Installment", "Due Date(DD/MM/YYYY)", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "6th Installment", "Due Date(DD/MM/YYYY)", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "7th Installment", "Due Date(DD/MM/YYYY)", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "8th Installment", "Due Date(DD/MM/YYYY)", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "9th Installment", "Due Date(DD/MM/YYYY)", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "10th Installment", "Due Date(DD/MM/YYYY)", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "11th Installment", "Due Date(DD/MM/YYYY)", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "12th Installment", "Due Date(DD/MM/YYYY)", "Payment Date(DD/MM/YYYY)", "Paid(Y/N)", "Agent Fee", "Agent Code"];

			$firstColumnIndex = Coordinate::columnIndexFromString('A');
			$lastColumnIndex = Coordinate::columnIndexFromString('CR');
		}

		// print_obj($expected_headers);die;
		

        $firstRow = 3;
        $data = [];
        for ($col = $firstColumnIndex; $col <= $lastColumnIndex; ++$col) {
            $data[] = trim($sheet_data->getCellByColumnAndRow($col, $firstRow)->getValue());
        }

		//print_obj($data);die;


        // Normalize headers
        $normalized_expected_headers = array_map('normalizeHeader', $expected_headers);
		$normalized_uploaded_headers = array_map('normalizeHeader', $data);

	
        // Log for debugging
        error_log("Expected Headers: " . json_encode($normalized_expected_headers));
        error_log("Actual Headers: " . json_encode($normalized_uploaded_headers));

		//print_obj(count($normalized_expected_headers));die;
		//print_obj(count($normalized_uploaded_headers));die;
		

        // Check if the headers match
        if ($normalized_expected_headers === $normalized_uploaded_headers) {
            $firstRow = 4;
            $lastRow = $sheet_data->getHighestRow();
            $exceldata = [];

            if ($lastRow <= $rows_limit) {
                for ($row = $firstRow; $row <= $lastRow; ++$row) {
                    for ($col = $firstColumnIndex; $col <= $lastColumnIndex; ++$col) {
                        $cell = $sheet_data->getCellByColumnAndRow($col, $row);
                        
                        // Check if the cell contains a date
                        if (Date::isDateTime($cell)) {
                            $value = Date::excelToDateTimeObject($cell->getValue())
                                ->format('Y/m/d'); // Convert to YYYY/MM/DD format
                        } else {
                            $value = $cell->getValue();
                        }
                        
                        $exceldata[$row][$col] = $value;
                    }
                }

                $filtered_data = array_filter($exceldata, function($row) {
                    return !empty(array_filter($row));
                });

                return ['validated' => 200, 'exceldata' => array_values($filtered_data)];
            } else {
                return ['validated' => 400, 'error' => 'More than ' . $rows_limit . ' rows cannot be processed at once.'];
            }
        } else {
            // Find mismatched headers
            $mismatched_headers = [];
			// Debugging: Log headers
			
            foreach ($normalized_expected_headers as $index => $expected_header) {
				if (!isset($normalized_uploaded_headers[$index]) || $normalized_uploaded_headers[$index] !== $expected_header) {
					$mismatched_headers[] = [
						'position' => $index + 1,
						'expected' => $expected_header,
						'found' => $normalized_uploaded_headers[$index] ?? 'missing'
					];
				}
			}

            return [
                'validated' => 400,
                'error' => 'Excel1 data format headings are incorrect. Please download the sample excel for your reference.',
                'mismatched_headers' => $mismatched_headers
            ];
        }
    } else {
        return ['validated' => 400, 'error' => 'Sheet data error'];
    }
}



function normalizeHeader($header) {
    $header = strtolower(trim($header)); // Convert to lowercase and trim spaces
    $header = preg_replace('/\s*\(\s*/', ' (', $header); // Ensure space before parentheses
    $header = preg_replace('/\s*\)\s*/', ')', $header); // Ensure no space after parentheses
    $header = preg_replace('/\)\)+/', ')', $header); // Remove extra closing parentheses
    $header = preg_replace('/\s+/', ' ', $header); // Replace multiple spaces with single
    return $header;
}




function write_banks_details_excel() {
    // Define file paths
    $sampleFilePath = FCPATH.'uploads/app/samples/bank_accounts_report.xlsx'; // Path to the sample file
    $tempFilePath = FCPATH.'uploads/temp_files/bank_accounts_report_modified.xlsx'; // Path to save the modified file

    // Check if the sample file exists
    if (!file_exists($sampleFilePath)) {
        return ['status' => 'error', 'message' => 'Sample file not found.'];
    }

    try {
        // Load the sample file
        $spreadsheet = IOFactory::load($sampleFilePath);

        // Perform any modifications if needed
        // For example, you can add a new sheet, modify cell values, etc.

        // Save the modified file to the temp folder
        $writer = IOFactory::createWriter($spreadsheet, 'Xlsx');
        $writer->save($tempFilePath);

        // Return the download link of the modified file
        $downloadLink = '/'.$tempFilePath; // Adjust this link based on your server's URL structure
        return ['status' => 'success', 'download_link' => $downloadLink];
    } catch (\Exception $e) {
        return ['status' => 'error', 'message' => 'Error processing the file: ' . $e->getMessage()];
    }
}

MMCT - 2023