Hola,
Me permito añadir que a las cabeceras HTTP que el compañero Darwin ha indicado podrían añadirse algunas más, como por ejemplo, aquellas que indican un nombre para el archivo, el tamaño de este, etc. Seguramente habrá más cabeceras relacionadas con esto, pero, desde luego, estas están ahí disponibles:
Código PHP:
/* */
header("Content-Description: File Transfer");
header("Content-Type: application/force-download");
header("Content-Length: " . filesize(nombre-archivo.xls));
header("Content-Disposition: attachment; filename="nombre-archivo.xls");
/* */