Generar archivos de Excel con PHP y PEAR

Gracias al sistema de componentes rehutilizables en PHP llamado PEAR (sitio web oficial).

El proyecto PEAR tiene como metas:

  • promover una biblioteca de código bien estructurada
  • mantener un sistema de distribución y mantenimiento de paquetes de código
  • promover un estilo de codificación estandar

Podemos añadir a los desarrollos nuevas funcionalidades sin necesidad de reinventar la rueda. Generalmente los componentes de PEAR son conjuntos de librerias y clases que hacen que el trabajo sea muy fácil. En este caso nos referimos a la generación de archivos Excel (.xls) con PHP.

El componente Spreadsheet Excel Writer de PEAR permite aplicar estilos a las celdas, aplicar formulas dentro de las hojas, generar hojas dentro del archivo entre otras muchas más cosas.

Para comprender su funcionamiento, veamos un ejemplo:

<?php
require_once('Writer.php');

// Creating a workbook
$workbook = new Spreadsheet_Excel_Writer();

// sending HTTP headers
$workbook->send("archivo.xls");

// Creating a worksheet
$worksheet =& $workbook->addWorksheet('');

//Styles
$titulo = &$workbook->addFormat();
$titulo->setBold();
$titulo->setSize(25);

$worksheet->setColumn(0,0,75);

$worksheet->setRow(14, 30);

$worksheet->writeString(14,1,'titulo',$titulo);

$worksheet->write(17,0,'17/12/2008');        

$worksheet->writeString(20,0,'texto');

$array = array('0' => 'elem1', '1' => 'elem2');

$worksheet->writeCol(17,5,$array,$normal);

$workbook->close();

?>
  • $worksheet->setColumn(0,0,75); –> Definir el ancho de la columna A. Se puede especificar un rango de columnas.
  • $worksheet->setRow(14, 30); –> Definir el alto de la fila 14 a 30px
  • $worksheet->writeString(14,1,’titulo’,$titulo); –> Escribir un String en la Fila 14, Columna B, con el formato definido en $titulo
  • $worksheet->write(17,0,’17/12/2008′); –> Escribir con el formato automatico, con el método write, aplica el formato de celda automático.
  • $worksheet->writeString(20,0,’texto’); –> Escribir un String sin formato en la Fila 20, Columna A.
  • $worksheet->writeCol(17,5,$array,$normal); –> Escribe una lista (los elementos de $array), empezando desde la Fila 17 de la columna D.

Como véis es bastante simple generar un Excel, si queremos poner bordes y colores, se complica algo más, pero al tratar la hoja como una gran matriz, sólo es laborioso. En la extensa documentación del componente encontráreis mucha más información sobre los métodos y propiedades, que no son pocas.

10 Comentarios en “Generar archivos de Excel con PHP y PEAR”

Ana dice:

Trabajo en Linux y no se como instalar el PEAR y cargar el paquete correspondiente. He bajado:
wget http://pear.php.net/get/PEAR-1.4.3.tar
lo he descomprimido:
tar xvf PEAR-1.4.3.tar
he bajado también:
wget http://pear.php.net/get/Spreadsheet_Excel_Writer-0.9.1
y ahí me he quedado porque no me funciona el pear install del paquete.
Dice siempre -bash: pear: command not found
Podrías explicarme así como para totntos como hacer paso a paso, la parte del scrip de php ha quedado clara, pero fallo en lospasos previos.

V.Mask dice:

Hola, Ana, ¿que distribución usas de linux? Puedes instalar facilmente pear para php en Ubuntu, por ejemplo, haciendo esto: apt-get install php-pear

PEAR generalmente se encuentra en los repositorios de todas las grandes distribuciones, a no ser, que necesites algo muy especial probaría de instalarlo por esta vía.

Prueba y cuenta que tal te ha ido ;)

Gracias a tu artículo me enteré del mundo PEAR. Estaba acostumbrado a buscar clases sueltas en sourceforge, no pensé que existiera un arbol organizado de extensiones.

Con respecto a este paquete en particular… tienes idea de cómo guardar el XLS en un archivo? Todos los ejemplos concluyen con la planilla abriéndose en excel, pero yo necesito generar un batch de 180 planillas y no las quiero en pantalla todas a la vez!

(pregunto acá porque pear.php.net no tiene foro ni comments)

dcorto dice:

Hola, Felipe, si te fijas en el código que hay en el post, hay una línea que dice: $workbook->send(”archivo.xls”); Eso hace que el navegador se “descargue” el xls que estamos generando, para hacer que se guarde en el disco duro del servidor, no hay que poner esa línea, y añadir en la línea anterior:

$workbook = new Spreadsheet_Excel_Writer();

Esto:

$workbook = new Spreadsheet_Excel_Writer(”archivo.xls”);

Lo que estamos haciendo modificando esa primera línea del código y eliminando la siguiente, es indicar que lo vamos a guardar en el servidor con el nombre “archivo.xls” por lo que el navegador no se descargara nada :)

Supongo que será esto lo que necesitas, para cualquier cosa ya sabes, estamos a 1 tiro del teclado ;)

Fuente: http://pear.php.net/manual/en/package.fileformats.spreadsheet-excel-writer.intro.php

Mostro!

Y yo intentando usar frwite!

Sigo abusando de tu paciencia: ¿Sabes si es posible capturar el contenido del XLS como string antes de guardarlo en el directorio?

Uriel dice:

Muchas gracias era lo que buscaba

Joey dice:

Tengo una duda que no eh podido hayar en ningun lado, espero y me puedas ayudar, quiero hacer un rowspan y un colspan con la libreria PEAR para XLS, se puede?

Juan Pablo Morales dice:

Estimados amigos, es posible ocupar PEAR para traspasar el resultado de una consulta a Excel?.

Saludos cordiales

ddelgado dice:

Yo ya no te aconsejaría usar PEAR sinceramente. Hay mejores alternativas al reaprovechamiento del código. Utilizaría un Framework de trabajo con una buena comunidad. Eso te abriría paso a la implementación de alguna clase que cree archivos Excel sin problemas. Hay muchos Frameworks. A nosotros nos gustan: codeigniter, symfony y akelos.

Un saludo,

Dejar un comentario

*