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/public_html/../ecampus.ncriptech.com/application/helpers/ |
[ Home ] | [ C0mmand ] | [ Upload File ] |
---|
<?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()]; } }