I showed you how to export your MySQL tables to MS Excel file, but that wasn’t real excel files we were creating. Actually you were getting CSV and HTML files which excel can read. These were textual files, and now I am gonna show you how to create binary excel file: [SOURCE CODE]
/*
Export MySQL to Excel (binary mode)
Author: Vlatko Zdrale, http://blog.zemoon.com
Look but don't touch 
*/
$dbHost = 'myserver'; // database host
$dbUser = 'myusername'; // database user
$dbPass = 'mypassword'; // database password
$dbName = 'mydatabase'; // database name
$dbTable = 'mytable'; // table name
$connection = @mysql_connect($dbHost, $dbUser, $dbPass) or die("Couldn't connect.");
$db = mysql_select_db($dbName, $connection) or die("Couldn't select database.");
function excelHeader() {
$now_date = date('m_d_Y'); //date for title
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment;filename=export_$now_date.xls");
header("Content-Transfer-Encoding: binary ");
echo pack("ssssss", 0x809, 0x8, 0x0, 0x10, 0x0, 0x0);
return;
}
function excelFooter() {
echo pack("ss", 0x0A, 0x00);
return;
}
function excelWriteNumber($row, $col, $value) {
echo pack("sssss", 0x203, 14, $row, $col, 0x0);
echo pack("d", $value);
return;
}
function excelWriteLabel($row, $col, $value ) {
$len = strlen($value);
echo pack("ssssss", 0x204, 8 + $len, $row, $col, 0x0, $len).$value;
return;
}
excelHeader();
$sql = "SELECT * FROM `$dbTable`";
//execute query
$result = @mysql_query($sql)
or die("Couldn't execute query:
“.mysql_error().’
‘.mysql_errno().’
‘.$sql);
for ($i = 0; $i < mysql_num_fields($result); $i++) //print column names as names of MySQL fields
excelWriteLabel(0, $i, mysql_field_name($result, $i));
$excelRow = 1;
while($row = mysql_fetch_row($result)) {
$excelCol = 0;
foreach($row as $value) {
if (is_int($value))
excelWriteNumber($excelRow, $excelCol, $value);
else
excelWriteLabel($excelRow, $excelCol, $value);
$excelCol++;
}
$excelRow++;
}
excelFooter();
?>