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.

Articulos
Tips
This site uses valid HTML and CSS.
If you like what we do, please don't hestitate and subscribe to our