Export MySQL data to Excel in PHP Export MySQL data to Excel in PHP mysql mysql

Export MySQL data to Excel in PHP


Just Try With The Following :

PHP Part :

<?php/*******EDIT LINES 3-8*******/$DB_Server = "localhost"; //MySQL Server    $DB_Username = "username"; //MySQL Username     $DB_Password = "password";             //MySQL Password     $DB_DBName = "databasename";         //MySQL Database Name  $DB_TBLName = "tablename"; //MySQL Table Name   $filename = "excelfilename";         //File Name/*******YOU DO NOT NEED TO EDIT ANYTHING BELOW THIS LINE*******/    //create MySQL connection   $sql = "Select * from $DB_TBLName";$Connect = @mysql_connect($DB_Server, $DB_Username, $DB_Password) or die("Couldn't connect to MySQL:<br>" . mysql_error() . "<br>" . mysql_errno());//select database   $Db = @mysql_select_db($DB_DBName, $Connect) or die("Couldn't select database:<br>" . mysql_error(). "<br>" . mysql_errno());   //execute query $result = @mysql_query($sql,$Connect) or die("Couldn't execute query:<br>" . mysql_error(). "<br>" . mysql_errno());    $file_ending = "xls";//header info for browserheader("Content-Type: application/xls");    header("Content-Disposition: attachment; filename=$filename.xls");  header("Pragma: no-cache"); header("Expires: 0");/*******Start of Formatting for Excel*******/   //define separator (defines columns in excel & tabs in word)$sep = "\t"; //tabbed character//start of printing column names as names of MySQL fieldsfor ($i = 0; $i < mysql_num_fields($result); $i++) {echo mysql_field_name($result,$i) . "\t";}print("\n");    //end of printing column names  //start while loop to get data    while($row = mysql_fetch_row($result))    {        $schema_insert = "";        for($j=0; $j<mysql_num_fields($result);$j++)        {            if(!isset($row[$j]))                $schema_insert .= "NULL".$sep;            elseif ($row[$j] != "")                $schema_insert .= "$row[$j]".$sep;            else                $schema_insert .= "".$sep;        }        $schema_insert = str_replace($sep."$", "", $schema_insert);        $schema_insert = preg_replace("/\r\n|\n\r|\n|\r/", " ", $schema_insert);        $schema_insert .= "\t";        print(trim($schema_insert));        print "\n";    }   ?>

I think this may help you to resolve your problem.


Try this code. It's definitly working.

<?php// Connection $conn=mysql_connect('localhost','root','');$db=mysql_select_db('excel',$conn);$filename = "Webinfopen.xls"; // File Name// Download fileheader("Content-Disposition: attachment; filename=\"$filename\"");header("Content-Type: application/vnd.ms-excel");$user_query = mysql_query('select name,work from info');// Write data to file$flag = false;while ($row = mysql_fetch_assoc($user_query)) {    if (!$flag) {        // display field/column names as first row        echo implode("\t", array_keys($row)) . "\r\n";        $flag = true;    }    echo implode("\t", array_values($row)) . "\r\n";}?>


If you just want your query data dumped into excel I have to do this frequently and using an html table is a very simple method. I use mysqli for db queries and the following code for exports to excel:

header("Content-Type: application/xls");    header("Content-Disposition: attachment; filename=filename.xls");  header("Pragma: no-cache"); header("Expires: 0");echo '<table border="1">';//make the column headers what you want in whatever order you wantecho '<tr><th>Field Name 1</th><th>Field Name 2</th><th>Field Name 3</th></tr>';//loop the query data to the table in same order as the headerswhile ($row = mysqli_fetch_assoc($result)){    echo "<tr><td>".$row['field1']."</td><td>".$row['field2']."</td><td>".$row['field3']."</td></tr>";}echo '</table>';