Exportar registros a Excel automáticamente con PHP - Electronik-Pro, Informatica, Noticas,Wordpress,Facebook,Hacking,Programas,Hosting,Dominios

Últimamente he trabajado con aplicaciones de registro de usuarios para distintos eventos, y una de las funcionalidades principales que requieren estos sistemas es la exportación en formato XLS (o de Excel) de toda la información, por lo que en este post les explicaré el procedimiento que utilizo para crear estos listados en formato excel.

Existen varias formas de conseguir crear estos archivos, y una de ellas es utilizar librerías disponibles en PEAR, o la muchas otras librerías que andan por ahí sueltas en la web, aunque para mi el paso mas sencillo y lmpio es: para cada de celda insertar un tabulador (\t) y para cada cambio de fila un salto de línea (\n).

Por ejemplo, para la siguiente tabla convertirla en un archivo Excel:

unodostrescuatrocincoseis
sieteochonuevediezonce4
docetrececatorcequince46ah

Sería de la siguiente forma: A cada dato agregarle un tabulador después de que termina la celda, y al final de cada línea un salto del línea.


  1. echo "uno\tdos\ttres\tcuatro\tcinco\tseis\t\n";
  2. echo "siete\tocho\tnueve\tdiez\tonce\t4\t\n";
  3. echo "doce\ttrece\tcatorce\tquince\t46\tah\t\n";
  4. ?>

El código anterior si lo copiamos y guardamos en un archivo prueba.xls y lo abrimos en Excel, este ya lo interpretará en el formato de filas y columnas.

Ahora para que el código anterior funcione, forzamos enviamos al navegador headers identificando la salida de datos como un archivo de excel, y además forzamos la descarga para que este archivo pueda ser guardado.


  1. header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  2. header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
  3. header ("Cache-Control: no-cache, must-revalidate");
  4. header ("Pragma: no-cache");
  5. header ("Content-type: application/x-msexcel");
  6. header ("Content-Disposition: attachment; filename=\"prueba.xls\"" );

  7. echo "uno\tdos\ttres\tcuatro\tcinco\tseis\t\n";
  8. echo "siete\tocho\tnueve\tdiez\tonce\t4\t\n";
  9. echo "doce\ttrece\tcatorce\tquince\t46\tah\t\n";
  10. ?>

Otra forma de crear archivos legibles por Excel, es el formato CSV. Este formato para cada cambio de dato en lugar de un tabulador se inserta un ; (punto y coma), y para cada cambio de fila un salto de línea.

El ejemplo anterior para exportarlo en CSV, sería así:


  1. header ("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
  2. header ("Last-Modified: " . gmdate("D,d M YH:i:s") . " GMT");
  3. header ("Cache-Control: no-cache, must-revalidate");
  4. header ("Pragma: no-cache");
  5. header("Content-type: application/vnd.ms-excel");
  6. header ("Content-Disposition: attachment; filename=\"prueba.csv\"" );

  7. echo "uno;dos;tres;cuatro;cinco;seis;\n";
  8. echo "siete;ocho;nueve;diez;once;4;\n";
  9. echo "doce;trece;catorce;quince;46;ah;\n";
  10. ?>

Todo lo anterior es sólo demostración: Si quisieramos exportar una base de datos, habría que recorrer cada uno de los registros e irlos mostrando en alguno de los 2 formatos anteriores para y así tendremos un archivo legible por excel.

Nota: Si se exporta gran cantidades de registros, es recomendable comprimir los la información en algun formato. Yo utilizo compresión en Zip, y me ha funcionado bastante bien.

0 comentarios:

Publicar un comentario

 
Top