ElTicus.com

Programación, lenguajes y recursos para programadores

**
Truco
Como generar un archivo XLS desde PHP
Mandar la salida de un reporte directamente al excel
Publicado por JL Fecha: 2007-01-24 09:01:43 Idioma: Español Tipo de documento: Truco

Como generar un archivo XLS desde PHP

La idea consiste en generar un archivo de excel y que este archivo se abra en el MS-EXCEL tal como si se tratara de un archivo XLS, pero en realidad lo estaremos creando "al vuelo".

Deberemos considerar que un archivo de excel consta únicamente de celdas, por lo que el código que generaremos deberá estar basado en celdas también. La manera mas simple de hacerlo es generando una tabla en HTML. Podemos usar fuentes, colores, formatos e incluso concatenar celdas mediante colspan y rowspan . Pero las medidas de alto y ancho de tablas y celdas serán ignorados por lo que no tiene caso utilizar width ni height. Cada cuadro de nuestra tabla en HTML pasará a ser una celda de la hoja de excel.

Cuando ya tengamos el código en PHP que nos genere la tabla, simplemente agregamos las siguientes líneas al inicio:

  header("Content-type: application/vnd.ms-excel");
  header("Content-Disposition:  filename=\"NOMBRE.XLS\";");

Donde NOMBRE.XLS es el nombre del archivo con que se abrirá en el excel. Este código lo he probado con las versiones de excel 2000, 2002 y XP con buenos resultados y debería de funcionar con cualquiera.


Tambien se pueden colocar fórmulas, y en este caso, estas deberán comenzar con el símbolo de =
(igual). La utilización de fórmulas puede se run poco compleja porque es necesario calcular préviamente la celda a la que corresponderá cada dato.

Ejemplo completo:

El siguiente código deberá guardarse dentro de un archivo PHP y ejecutarse desde el navegador.


<?PHP 
 header("Content-type: application/vnd.ms-excel");
 header("Content-Disposition:  filename=\"X2003.XLS\";");
 
 echo "<table border=1>" ;
 echo "<tr><th> Estado </th><th> 2000  </th><th> 2001 </th><th> 2002 </th> </tr>";
 echo "<tr><td> Colima </td><td> 4.6  </td><td> 4.4 </td><td> 3.8 </td> </tr>";
 echo "<tr><td> Aguascalientes </td><td> 6.5  </td><td> 6.5 </td><td> 3.3 </td> </tr>";
 echo "<tr><td> Guerrero </td><td> 7.2  </td><td> 7.8 </td><td> 3.2 </td> </tr>";
 echo "<tr><td> Totales </td><td> =sum(b2:b4)  </td><td>  =c2+c3+c4 </td><td>  =sum(d2:d4) </td> </tr>";
 echo "</table>"; 
?>

En este ejemplo se colocó una columna de Totales la cual se calcula en base a una fórmula.

NOTA: es necesario que el cliente tenga instalado Excel, si no lo tiene se le pedirá guardar el archivo en disco. El resultado tarda unos segundos en verse debido a que debe cargar la aplicación excel completa.




Hay 2 comentarios sobre este tema por parte de los lectores


Haz un comentario sobre este tema
Nombre email (no se muestra)
comentario:
Escribe las 2 letras que ves aquí: Imagen anti-spam =

Comentarios de parte de los lectores: