Baner principal del sitio
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 51 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 =

Los últimos 5 comentarios colocados son:

1. Comentario de jona el 2011-12-14 18:29:04
Por que manda un error al abrir el archivo, dice que el archivo esta dañado

2. Comentario de OwSPWQvGLJg el 2011-09-01 07:27:26
oNR3vS , [url=http://pilbolvwahna.com/]pilbolvwahna[/url], [link=http://ofooscagabjz.com/]ofooscagabjz[/link], http://hhoqkhvcvhom.com/

3. Comentario de EAdmvwGjTN el 2011-08-28 07:23:14
deDYB9 , [url=http://zuymrogyteqn.com/]zuymrogyteqn[/url], [link=http://hjgywdfunxkq.com/]hjgywdfunxkq[/link], http://faczaysgtuae.com/

4. Comentario de FyYPlyBHPwsc el 2011-08-27 07:04:37
I saercehd a bunch of sites and this was the best.

5. Comentario de A el 2011-07-03 04:03:41
A


VER TODOS LOS MENSAJES (51)...


Artículos relacionados:
Truco Como generar un archivo .DOC de WORD desde PHP Truco Como generar un archivo .DOC/.RTF de WORD desde PHP (Incluyendo tablas) artículo ¿Que es la integridad referencial?