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).{
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);
}
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