Macho, estas de suerte.
Tuve que hacer exactamente eso hace unos días, te paso el código.
Cualquier duda que tengas avisame,y si necesitas más contactame y te mando el archivo.
Tené en cuenta que el bucle en el que meto la tabla, está llamando a funciones. Si las queres avisame, pero no son más que formas de mysql reducidas.
Este código te genera el archivo .xls. Luego lo que haces es un link a ese archivo y listo, el tipo se lo baja.
Espero te sirva, saludos.
Código:
$shtml='<table>';
$shtml.='<tr align="left" bgcolor="#E0DFE3">';
$shtml.='<td>ID</td>';
$shtml.='<td>APELLIDO</td>';
$shtml.='<td>NOMBRE</td>';
$shtml.='</tr>';
$getSocios = hyt_query("SELECT * FROM sociosDos");
while($rsSocios = hyt_fetch_array($getSocios)){
$shtml.=' <tr align="left">';
$shtml.='<td>'.$rsSocios['id'].'</td>';
$shtml.='<td>'.$rsSocios['apellido'].'</td>';
$shtml.='<td>'.$rsSocios['nombre'].'</td>';
$shtml.='</tr>';
}
$shtml.="</table>";
$scarpeta="/home/a/direccion.com.ar/public_html/abm/xls/"; //carpeta donde guardar el archivo.
$sfile=$scarpeta."baseDeDatos.xls"; //ruta del archivo a generar
$fp=fopen($sfile,"w");
fwrite($fp,$shtml);
fclose($fp);