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>';