Export MS SQL SERVER data in MS Excel using php



This tutorial will go over how to download MS SQL Server data into Excel file. This is Very useful for generating Excel Reports of Php and MS SQL Server Applications. 

<?php
$myServer = "host_name";
$myUser = "user_name";
$myPass = "password";
$myDB =  "database_name";

//create an instance of the  ADO connection object
$conn = new COM ("ADODB.Connection") or die("Cannot start ADO");

//define connection string, specify database driver
$connStr = "PROVIDER=SQLOLEDB;SERVER=".$myServer.";UID=".$myUser.";PWD=".$myPass.";DATABASE=".$myDB;
$conn->open($connStr); //Open the connection to the database

//declare the SQL statement that will query the database
$query = "SELECT col1, col2, col3, .... , coln FROM table_name";

//execute the SQL statement and return records
$rs = $conn->execute($query);

$num_columns = $rs->Fields->Count();
//echo "col:".$num_columns . "<br>";

for ($i=0; $i < $num_columns; $i++) {
    $fld[$i] = $rs->Fields($i);
}

$contents="<table border='1'>";

while (!$rs->EOF)  //carry on looping through while there are records
{
    $contents.="<tr>";
    for ($i=0; $i < $num_columns; $i++) {
        $contents.="<td>" . $fld[$i]->value . "</td>";
    }
    $contents.="</tr>";
    $rs->MoveNext(); //move on to the next record
}

$contents.="</table>";

$file="File_name.xls";
$test="<table border=1><tr><td>Cell 1</td><td>Cell 2</td></tr></table>";
header("Content-type: application/vnd.ms-excel");
header("Content-Disposition: attachment; filename=File_name".date('Y-m-d').".xls");
echo $contents;

//close the connection and recordset objects freeing up resources
$rs->Close();
$conn->Close();

$rs = null;
$conn = null;
?>

2 comments :

  1. Works like a charm, But is there a way to format individual cells into text ?
    Example i have a cell with data like "0000007" as the excel generates its cell in general format it will only display "7" without the leading zeros. Any idea ?

    ReplyDelete