domingo, 16 de noviembre de 2014

Crear un archivo excel (.xls) con PHP

Crear un archivo excel (.xls) con PHP



Hola, en esta ocasión quiero mostrarles de la manera más sencilla como pueden crear un archivo “.xls” que es uno de los formatos para ser interpretados por excel, a partir de PHP.
Quise hacer este tutorial porque en días anteriores me encontraba realizando un proyecto para un cliente, y una de las cosas que me pidió fue que: de una tabla de reportes que se debía mostrar al usuario, esta tuviera la opción de imprimirse, pero que la impresión no fuera directamente desde el navegador sino que se descargara un archivo en cualquier formato (pdf, excel, doc, txt) para posteriormente proceder a abrirlo e imprimir la dichosa tabla desde allí.
Pensé hacerlo con la librería de mPDF pero me pareció una herramienta muy complicada para poner a funcionar una opción tan sencilla. Entonces investigando me encontré con ciertasheaders  (cabeceras) predeterminadas por PHP que cumplen con la función que pidió el cliente… y este fue el resultado:
Lo primero que se hace es crear una interfaz gráfica (index.php) para el usuario, en donde también se le va a mostrar la opción de “exportar”, en mi caso sólo he puesto esa opción como un link, ustedes pueden colocar un botón con diseños o lo que quieran:
index.php
1
2
3
4
5
6
7
8
9
10
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Incio</title>
</head>
<body>
<div>Por ejemplo: acá va cualquier contenido</div>
<a href="exportar.php">Exportar</a>
</body>
</html>
Luego creamos la parte del servidor (exportar.php), que es esa la que se encarga de descargar el contenido PHP en el formato excel que deseamos:
exportar.php
<? 
header("Content-Type: application/vnd.ms-excel");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("content-disposition: attachment;filename=datos_usuarios.xls");
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<style>
 body{
  font-size:18px;
  font:Arial, Helvetica, sans-serif;
 }
 
 #tabla{
  border:1px solid #999;
 }
 
 #tabla td{
  border:1px solid #999;
 }
</style>
</head>
<body>
Datos de los usuarios:
<table width="50%" cellpadding="10" cellspacing="0" id="tabla">
  <tr>
    <td width="42%" align="center">Nombres</td>
    <td width="58%" align="center">Edad</td>
  </tr>
  <tr>
    <td align="center">Marta</td>
    <td align="center">25</td>
  </tr>
  <tr>
    <td align="center">Juan</td>
    <td align="center">36</td>
  </tr>
</table>
</body>
</html>
<?
 echo "<script>location = 'index.php'; </script>";
?>
Ahora les explico el archivo “exportar.php” de arriba hacia abajo:
las primeras lineas de código que se ven es el PHP que descarga el contenido de la página actual a un archivo excel (.xls), por medio de las cabeceras que se especifican ahí. Cabe destacar que en la linea
header("content-disposition: attachment;filename=datos_usuarios.xls");

el valor de “filename” es el nombre con el que se va a descargar el archivo, y este perfectamente pude ser modificado al valor que deseen.
Luego, siguiendo con la parte del HTML, hay que destacar 2 puntos importantes:
1) es necesario que se incluya la siguiente etiqueta en la cabecera del documento HTML, ya que sin ella algunos caracteres especiales, como tildes y “Ñ”, no aparecerían correctamente en el documento generado para descargar
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
2) todos los estilos que se quieran agregar a los elementos del documento HTML, deben ser incluidos dentro del mismo, en la cabecera. Resumiendo los dos puntos anteriores a esto:
<head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <style> body{ font-size:18px; font:Arial, Helvetica, sans-serif; }   #tabla{ border:1px solid #999; }   #tabla td{ border:1px solid #999; } </style> </head>
Luego se muestra una tabla con algunos datos, y por último este script PHP, que lo único que hace es devolverme a la pagina inicial.
<?
 echo "<script>location = 'index.php'; </script>";
?>
…Y bueno, eso ha sido todo, acá les dejo el código fuente de la aplicación para que lo descarguen y espero haber podido ayudar en algo.
-Un abrazo colegas.


Compartir:

0 comentarios:

Publicar un comentario