Para completar lo de cvs que han mencionado algunos:
Basta generar la salida de php generando un archivo CSV en lugar de contenido HTML, en este ejemplo se verá como un attachment para que el usuario lo pueda grabar en su disco duro, con la ventaja de que desde el explorador de Windows, al hacerle doble click, se abrirá automáticamente Excel.
En algunos casos bastará con usar la función "Datos->Texto en columnas" y usar el caracter ";" para delimitar el texto.
<?php
header("Cache-control: private, no-cache, must-revalidate");
header("Pragma: no-cache");
header("Content-type: application/octet-stream");
header("Content-Disposition: attachment; filename=download.csv");
//Aquí el contenido del archivo, p.e:
echo "\"ID\";\"Pais\"\r\n";
echo "\"1\";\"Colombia\"\r\n";
echo "\"2\";\"Chile\"\r\n";
echo "\"3\";\"Brasil\"\r\n";
?>
Esto creará un archivo que podrá ser importado en Excel así:
ID | Pais |
1 | Colombia |
2 | Chile |
3 | Brasil |
El uso de comillas rodeando cada campo es muy útil cuando uno desea que Excel no cambie el formato de la información, por ejemplo, si se omiten las comillas y la información es un número que empieza por cero, Excel lo interpreta como un entero y no tiene en cuenta ese cero, lo cual puede crear problemas si se espera que el campo sea tratado como texto. El resto depende de que el usuario sepa como operar Excel correctamente cuando abre el archivo por primera vez.