Generación de Planillas Excel desde PHP
¿Necesitamos generar una planilla excel dinámica?
La generación de una “Planilla Excel” no es una tarea complicada, en muchos lenguajes, como Java y C#, existen librerias libres que nos permiten generar documentos office independiente de la plataforma, como los proyectos Apache POI y su Port NPOI, en PHP, tenemos desde hace un tiempo atrás el proyecto PEAR Spreadsheet_Excel_Writer.
Instalación
Hay dos alternativas para instalar un package PEAR, una es utilizando los gestores de pear como pear o pyrus y la otra es realizar una instalación manual descargando el package y sus dependencias.
# Usando pear pear install OLE-1.0.0RC1 pear install Spreadsheet_Excel_Writer-0.9.2 # usando pyrus php pyrus.phar install pear/Spreadsheet_Excel_Writer-0.9.2 # descarga manual wget "http://download.pear.php.net/package/Spreadsheet_Excel_Writer-0.9.2.tgz"
O podemos descargar el ejemplo funcional de más abajo.
Generación de una Planilla
Spreadsheet_Excel_Writer dispone de métodos para la manipulación de nuestra planilla dinámica, podemos crear una o más hojas, trabajar con las celdas, incluso manejar formulas, pero lo más habitual (o facil xD) es crear una planilla de una hoja con los datos que vamos a exportar.
Vamos a crear una pequeña función data_to_excel, que nos permite generar una planilla dinámica excel desde un arreglo bidimensional.
<?php $pear = "/usr/share/php5/php/"; ini_set("include_path",ini_get("include_path").":$pear"); require_once("Spreadsheet/Excel/Writer.php"); function data_to_excel( $array , $name = "Hoja" ) { header("Content-type: application/vnd.ms-excel"); header("Content-Disposition: attachment; filename=$name.xls"); $x = & new Spreadsheet_Excel_Writer(); $x->setVersion(8); $s = &$x->addWorksheet( $name ); $sx = 0; $sy = 0; foreach( $array as $k => $r ) { foreach( $r as $kk => $c ) { if ( is_int( $c ) or is_float( $c ) ) $s->write($sx, $sy, $c); else $s->writeString($sx, $sy, $c); $sy++; } $sx++; $sy = 0; } $x->close(); } $data[] = array( "Id" , "Codigo" , "Producto" , "Valor" , "Stock" , "Costo" ); for( $i=0;$i<100;$i++ ) { $data[] = array( ($i + 1 ) , "00000000".$i , "PK1000".$i , rand(10000,99999) , rand(1,100) , rand(1000,9999)*0.79 ); } data_to_excel($data);
La función es sencilla, solo instancia a la clase Spreadsheet_Excel_Writer, agrega una nueva hoja y luego recorre el arreglo para ir insertando los datos en las celdas de nuestra planilla, muy útil a la hora de exportar datos, tablas, etc.
Descargar artículo “Generación de Planillas en PHP” más ejemplo funcional.