Crear una hoja de cálculo con PHP
Antes de nada: en este artículo no se explica cómo crear un archivo en formato Excel u OpenOffice.org Calc, sino de cómo hacer que estos programas «crean» que es así.
Crear una hoja de cálculo comprensible para Excel u OpenOffice.org Calc es más fácil de lo que parece. De hecho, el procedimiento que describo en este artículo realmente no crea una hoja de cálculo, sino un documento HTML con una tabla. El truco está en enviar una cabecera indicando un «mime-type» falso que será interpretado por el sistema operativo del cliente como una hoja de cálculo, tal que así:
header("Content-Type: application/vnd.ms-excel");
A continuación desgranaré un script de ejemplo que podréis probar aquí y descargar aquí:
En primer lugar generamos un nombre para el archivo de prueba con la fecha de hoy (del servidor, claro):
$filename = "testdata_" . date('Ymd') . ".xls";
Le indicamos al navegador que lo que enviamos es un archivo de tipo «application/vnd.ms-excel» y que va de forma adjunta:
header("Content-Disposition: attachment; filename=\"$filename\""); header("Content-Type: application/vnd.ms-excel");
En el caso de que querramos forzar la apertura de OpenOffice.org Calc, sustituiremos la extensión del archivo por «ods» y ésta última línea por:
header("Content-Type: application/vnd.oasis.opendocument.spreadsheet");
Y, al final, escribimos una tabla HTML normal y corriente con las etiquetas «<table></table>». Si todo va bien el navegador comenzará a descargar el archivo generado y nos preguntará si lo queremos guardar o abrir con el programa predeterminado. A partir de ahí ya es cosa vuestra...

















Y si quisiera forzar a descargar una plantilla excel con extension .xlsx????
P.D. El fichero miPlantilla.xlsx existe como tal y está realizado con MS-EXCEL 2007 y como plantilla.
No sé si te entiendo correctamente; si ya tienes creado el archivo que el usuario debe descargar solamente debes crear un enlace al archivo (que debe estar en el servidor) con HTML, no interviene para nada PHP.
Saludos muy interesante tu propuesta de exportar una tabla, pero tengo un problema y quisiera saber si me puedes ayudar yo tenia la exportacion todo muy bien a excel cuando el servidor estaba con windows y tenia instalado el excel en el servidor, ahora lo migramos a centos y ahi no hay excel trate de ponerle las lineas de codigo de tu ejemplo para que me abra con el calc pero me de un error de objeto no encontrado, te agradecería mucho si me podrias dar una mano mi email es: faustov_zh1@hotmail.com
Hola, muchas gracias por tan interesante publicación, para los novatos como yo les apunto el mime de Calc es: application/vnd.oasis.opendocument.spreadsheet
Espero que les sea de utilidad como a mi.
@Suyin: efectivamente, esa información ya está en el artículo.