Generate excel of Sql-server database using phpspreadsheetss

Viewed 24

I have been trying to import sql-server data to excel using php-spreadsheets. I came across through one youtube tutorial based on generating excel through php-spreadsheets I am unable to figure out the reason behind it going inside else loop which consist of an error message No records found. Instead of generating excel as an output it is giving me error message no records found. even though I installed php spreadsheets through composer I am sharing my both frontend and backend code except the designing part please help me on the same

frontend of my code

<form action="code.php" method="POST">

    <select name="export_file_type" class="form-control">
        <option value="xlsx">XLSX</option>
        <option value="xls">XLS</option>
        <option value="csv">CSV</option>
    </select>

    <button type="submit" name="export_excel_btn" class="btn btn-primary mt-3">Export</button>

</form>

backend of my code

<?php
session_start();

include 'connection.php';
require 'vendor/autoload.php';

use PhpOffice\PhpSpreadsheet\Spreadsheet;
use PhpOffice\PhpSpreadsheet\Writer\Xlsx;
use PhpOffice\PhpSpreadsheet\Writer\Xls;
use PhpOffice\PhpSpreadsheet\Writer\Csv;

if(isset($_POST['export_excel_btn']))
{
    $file_ext_name = $_POST['export_file_type'];
    $fileName = "student-sheet";

    $student = "SELECT * FROM students";
    $query_run = sqlsrv_query($conn, $student);

    if(sqlsrv_num_rows($query_run) > 0)
    {
        $spreadsheet = new Spreadsheet();
        $sheet = $spreadsheet->getActiveSheet();

        $sheet->setCellValue('A1', 'fullname');
        $sheet->setCellValue('B1', 'email');
        $sheet->setCellValue('C1', 'phone');
       
        $rowCount = 2;
        foreach($query_run as $data)
        {
            $sheet->setCellValue('A'.$rowCount, $data['fullname']);
            $sheet->setCellValue('B'.$rowCount, $data['email']);
            $sheet->setCellValue('C'.$rowCount, $data['phone']);
            
            $rowCount++;
        }

        if($file_ext_name == 'xlsx')
        {
            $writer = new Xlsx($spreadsheet);
            $final_filename = $fileName.'.xlsx';
        }
        elseif($file_ext_name == 'xls')
        {
            $writer = new Xls($spreadsheet);
            $final_filename = $fileName.'.xls';
        }
        elseif($file_ext_name == 'csv')
        {
            $writer = new Csv($spreadsheet);
            $final_filename = $fileName.'.csv';
        }

        // $writer->save($final_filename);
        header('Content-Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet');
        header('Content-Disposition: attactment; filename="'.urlencode($final_filename).'"');
        $writer->save('php://output');

    }
    else
    {
        $_SESSION['message'] = "No Record Found";
        header('Location: index.php');
        exit(0);
    }
}

?>

my sql table consist of only 3 columns fullname, email, phone and my table name is students

0 Answers
Related