sábado, 24 de marzo de 2012

Exportar a Excel el resultado de una SQL con Php

Supongamos que queremos exportar a Excel el resultado de una sentencia Sql lanzada contra nuestro servidor, pues os voy a mostrar un par de funciones que nos facilitarán esta tarea.





La función principal para realizar el proceso de importación será ExportExcel, a la tendremos que pasar una serie de parámetros para especificar los datos a exportar y el fichero a generar. Esta función se apoyará en la otra función ExportExcelHeaders para generara la salida:

function ExportExcel ($path,$name_file,$array_data,$file_ext ="xls")
{
  set_time_limit(0);
  $backup_file = $name_file.'.'.$file_ext;
  $fp = fopen($path.$backup_file, 'w');
  $array_headers=$array_data[0];
  fputs($fp,'<table><tr bgcolor="#f0f0f0">');
  array_walk_recursive($array_headers, 'ExportExcelHeaders',$fp);
  fputs($fp,"</tr>");
  foreach($array_data as $indice=>$elemento)
  {
    fputs($fp,'<tr>');
    foreach($elemento as $clave=>$valor)
    {
      $cadena=ereg_replace('[[:space:]]+',' ',utf8_decode($array_data[$indice][$clave]));
      fputs($fp,'<td><font face="Arial,Helvetica,sans-serif">'.$cadena.'</font></td>');          
    }
    fputs($fp,'</tr>');
  }
  fputs($fp,'</table>');  
  fclose($fp);
  echo 'fichero generado con éxito.        
  <a href="'.$path.$backup_file.'" target="_blank">Descargar fichero</a>';
}
function ExportExcelHeaders($elemento, $clave,$fp)
{
  $cadena = '<td><font face="Arial,Helvetica,sans-serif" color="#0000CC">'.$clave.'</font></td>';
  fputs($fp,$cadena);
}
A la función ExportExcel habrá que pasarla cuatro valores: la ruta donde vamos a exportar el fichero; el nombre del fichero; los datos a exportar; y de forma opcional, la extensión del fichero a generar (por defecto xls).

Supongamos que tenemos en $elements un array con los registros devueltos por nuestra consulta Sql y que lo queremos exportar con el nombre miexcel a la caperta ./export/ . La llamada para realizar la exportación sería:
ExportExcel('./export/','miexcel',$elements);
La función ExportExcel acepta un cuarto parametro que sería la extensión del fichero que vamos a generar, por defecto xls.

Entrando un poco en el explicación de la función ExportExcel, vemos como los registros se van montando dentro de una tabla html, especificando algunos atributos de colores y fuentes para darle un aspecto más vistoso (podríamos ampliar el funcionamiento de la función para pasarla parámetros con estos colores y estilos). Una vez finalizado el proceso de generación del fichero Excel, se nos mostrará un enlace para la descarga del mismo.

No hay comentarios :

Publicar un comentario