Espero que esto te sirva... en realidad, con crear tablas el Excel lo reconoce bien.
Código PHP:
<?
...
$exel = "<table width='100%' border='1' cellspacing='0' cellpadding='0'><tr>
<td align='center' bgcolor='#999999'>Título 1</td>
<td align='center' bgcolor='#999999'>Título 2</td>
...
</tr>";
...
while ($row=mysql_fetch_row($result)){
$exel .= "<tr>
<td align='center'>$row[0]</td>
<td align='center'>$row[1]</td>
...
</tr>";
}
$exel.="</table>";
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=reporte.xls");
header("Pragma: no-cache");
header("Expires: 0");
echo $exel;
?>