Escribir o exportar a archivo excel desde php

Mediante el framework oficial PEAR podemos extender la capacidad de nuestras aplicaciones de un modo rápido y sencillo. Pear nos ofrece una completa biblioteca de librerias que nos permite hacer prácticamente de todo.

Una de esas librerias es por ejemplo Spreadsheet_Excel_Writer , que permite escribir archivos en excel desde nuestra aplicación, especificando estilos, colores, alineamiento, funciones y comentarios de celda además de otras otras cosas que podemos hacer con una aplicación ofimática que maneje estos ficheros.

Para poder usar ésta libreria, debemos instalar pear en nuestro servidor  (link en castellano y de forma manual) y después llamar a la libreria dentro de nuestro código, por ejemplo:

< ?
//incluimos la libreria
require_once 'Spreadsheet/Excel/Writer.php';

//damos nombre al documento
$filename="prueba.xls";

//abrimos un nuevo documento
$docexcel = new Spreadsheet_Excel_Writer();

//abrimos una hoja del documento
$nuevahoja =& $docexcel->addWorksheet(”Titulo de la Hoja”);

//escribimos en sus celdas
$fila=0;
$columna=0;
$valor=”Hola”;
$nuevahoja->write($fila, $columna, “$valor_de_la_celda”);
//enviamos el documento para descargarlo y lo cerramos
$docexcel->send($filename);
$docexcel->close();
?>

Sobre Asier

Arquitecto web enganchado al desarrollo, estudio y planteamiento de proyectos en internet. Trabajo en Blackslot, empresa que fundé en el 2009. Me encanta el cine, el café, el sexo, la cultura geek, la cultura oriental y la música electrónica.
Artículo publicado en Desarrollo Web, PHP. Enlace a esta entrada..

11 espuestas a Escribir o exportar a archivo excel desde php

  1. Cristhian dijo:

    Tengo instalado el pear y el Spreadsheet_Excel_Writer, soy nuevo en esto asi que he tomado varios ejemplos para ver como funciona, pero siempre que los ejecuto me sale la siguiente warning:
    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\plantilla\index.php:9)
    in C:\php5\PEAR\Spreadsheet\Excel\Writer.php on line 67

    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\plantilla\index.php:9)
    in C:\php5\PEAR\Spreadsheet\Excel\Writer.php on line 68

    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\plantilla\index.php:9)
    in C:\php5\PEAR\Spreadsheet\Excel\Writer.php on line 69

    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\plantilla\index.php:9)
    in C:\php5\PEAR\Spreadsheet\Excel\Writer.php on line 70

    Warning: Cannot modify header information – headers already sent by (output started at C:\AppServ\www\plantilla\index.php:9)
    in C:\php5\PEAR\Spreadsheet\Excel\Writer.php on line 71

    Espero me puedan ayudar
    De antemano gracias!!

  2. Dny dijo:

    Simple amigo… lo mas dificil es instalar la cuestion en appserv…
    el problema es que enviaste las cabeceras html anterior mente en el archivo… asi q cuando le pones $libro->send(“arhivo.xls”) no puede volver a enviar las cabeceras…. HTML….
    //por ejemplo:
    —————————————————–
    holaaddFormat();
    $negrita->setBold();

    // Necesitamos una hoja en la cual poner nuestros datos
    $hoja =& $libro->addWorksheet(‘Hoja1’);

    // Verificamos que la hoja se haya generado correctamente
    if (PEAR::isError($hoja)) {
    die($hoja->getMessage());
    }

    // Este es el titulo
    $hoja->write(0, 0, “Escribir hojas en excel”, $negrita);

    // Generamos nuestro libro de excel
    $libro->send(‘ejemplo.xls’);
    $libro->close();
    ?>
    ——————————————————
    solucion:
    Saca el hola del principio del codigo y listo

  3. Ricardo dijo:

    Hola, muy interesante el contenido. He instalado y trabajado el codigo y me funciona perfectamente. La pregunta es, si necesito escribir en algunas celdas en particular de un archivo de Excel ya existente, es posible hacerlo? Ante todo, gracias por tu ayuda

  4. Cesar dijo:

    Ricardo

    encontraste la solución a tu problema?? yo necesito hacer lo mismo y aun no encuentro nada, te agradeceria si tienes algo a ver si lo publicas.

    gracias

  5. Gustavo dijo:

    el codigo me funciona muy bien cuando lo ejecuto desde un archivo nuevo.

    Pero en el momento de ejecutarlo desde una aplicacion como el sugarcrm este trata de cargarme todas las imagenes y elementos de la aplicacion.

    ya que necesito que solamente genere un archivo excel con losm datos que yo le especifico podrian explicarme como hacer para que no me cargue la informacion de la aplicacion que menciono,

    espero me hayan entendido.

    Gracias

  6. joe dijo:

    como hago para exportar a una plantilla de excel existente desde php?

  7. Jose Jaime dijo:

    La verdad es que yo soy bastante estúpido, pq no pude instalar toda la mierda que publicaste… y más estúpido soy por llevarte el apunte con eso de cambiar el php.ini, y llenarme de archivos que seguramente no me servirán para un carajo de forma que ya no me anda el apache y un montón de cosas más… Así que gracias, pero no estoy al nivel de los que pudieron hacer andar toda esta maraña de mierdas!!!. Suerte y Saludos… y si se te ocurre hacer una versión del tutorial explicado para IDIOTAS anotame primero en la lista.

  8. Jesus B dijo:

    Saludos, quisiera aportar algo de ayuda con referente a insertar imágenes a un archivo excel, usando esta maravillosa clase; porque tuve muchos problemas para averiguarlo.

    $hoja->insertBitmap(0,0,’/var/www/sitio-web/images/imagen.bmp’);

    Ahora, me gustaria que alguien me ayudara para combinar celdas

    Saludos y gracias

  9. Ruben dijo:

    Amigos, disculpen la ignorancia pero yo estoy necesitando de este recurso para mi apliacion pero estoy trabajando con xammp en windows…. me sirve esta aplicacion o no?.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos requeridos, están marcados *

*

Puedes usar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Notificarme los nuevos comentarios por correo electrónico. Tambien puedes suscribirte sin comentar.