4 de marzo de 2010

Generación de documentos XLS y DOC dinámicos con PHP

Cuando estamos desarrollando un software, siempre es necesario generar una serie de reportes para diferentes catálogos creados dentro de él. Estos reportes generalmente son html, pero en ocasiones también es necesario exportarlos a otros formatos, por ejemplo .doc (word) y .xls (excel).

En el presente artículo veremos como generar esos reportes de forma fácil y sencilla a partir del código html ya generado.

Supongamos que tenemos un reporte html, por ejemplo como el siguiente:

Cuando generamos este reporte html, lo que se hace en realidad es enviar cabeceras al servidor de apache para indicarle, en este caso, que se trata de un documento html (<html> ... bla bla bla).

Entonces lo único que tenemos que hacer, es agregar el siguiente código al princpio del archivo para enviar cabeceras e indicarle al servidor apache, que lo que sigue lo interprete como un documento xls (excel):

header("Content-type: application/vnd.ms-xls");
header("Content-Disposition: attachment; filename=archivo.xls);

Para generar un documento para word, solo es necesario cambiar xls por doc. Veamos un ejemplo completo:


<?php
header("Content-type: application/vnd.ms-doc");
header("Content-Disposition: attachment; filename=archivo.doc");
?>
Este es un ejemplo para generar un documento word




En este ejemplo lo único que se coloca entre las etiquetas php, son las cabeceras para generar el documento exportable. Lo demás es html puro.

Para generar un documento excel, es exacmente lo mismo, sin embargo para que cada valor caiga en una celda, se tiene que generar una tabla con código html.


<?php
header("Content-type: application/vnd.ms-xls");
header("Content-Disposition: attachment; filename=archivo.xls");
?>
<table border=1>
<tr><td>Celda1</td><td>Celda2</td></tr>
<tr><td>Celda3</td><td>Celda4</td></tr>
</table>


Este es un breve ejemplo, pero que sin duda le abrirá un mundo de posibilidades al lector para implementar esta funcionalidad.

Nota aclaratoria: Es importante hacer notar que para que el ejemplo funcione el archivo tiene que tener extensión .php.

No olvides dejar tus comentarios. Hasta la próxima!!!!

2 comentarios: