CodeIgniter – Exportar a excel con librería PHPExcel

A la hora de hacer nuestras aplicaciones con CodeIgniter, puede surgir la necesidad de exportar los resultados de una consulta a Excel. Para ello, os detallo los pasos para instalar la librería necesario, y un pequeño ejemplo de creación de un excel que se descarga…

Lo primero que haremos es descargar la librería PHPExcel que encontraréis en el siguiente enlace:

La tenéis ya? Lo descomprimis en una carpeta, y el contenido que hay en la carpeta Classes, lo copias en la carpeta /application/third_party, por lo que os quedará de la siguiente manera:

1
2
3
4
// Carpeta /application/third_party
[PHPExcel]
PHPExcel.php
index.html

Primera parte realizada. Segundo paso, ahora que tenemos la librería descargada en la carpeta third_party, pasamos a crear nuestra propia librería para poder utilizarla. Creamos el fichero Excel.php dentro de la carpeta libreries:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// Contenido fichero /application/libreries/Excel.php
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
 
/*
 * Clase para la exportación de resultados a excel
 * @version 0.1 Primera version
 */
require_once APPPATH ."/third_party/PHPExcel.php";
 
class Excel extends PHPExcel {
    public function __construct(){
        parent::__construct(); 
    }
}
?>

Como podéis observar, lo único que hace es un extend de la librería sin modificar nada, por lo que podremos utilizar esta librería como si fuera la original sin problemas.

Vamos a poner el tercer y penúltimo paso: crear el controlador. Vamos a hacer un ejemplo que sólo crea un excel con poco contenido y obliga a descargarlo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
// Contenido del fichero /application/controllers/jugadores.php
defined('BASEPATH') OR exit('No direct script access allowed');
 
class Jugadores extends CI_Controller {
 
    public function __construct(){
	parent::__construct();
        // Models
        ...
        // Libraries
        $this->load->library('excel');
    }
 
    ...
 
    public function exportar2excel(){
        $this->excel->setActiveSheetIndex(0);
        $this->excel->getActiveSheet()->setTitle('test worksheet');
        $this->excel->getActiveSheet()->setCellValue('A1', 'Un poco de texto');
        $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setSize(20);
        $this->excel->getActiveSheet()->getStyle('A1')->getFont()->setBold(true);
        $this->excel->getActiveSheet()->mergeCells('A1:D1');
 
        header('Content-Type: application/vnd.ms-excel');
        header('Content-Disposition: attachment;filename="nombredelfichero.xls"');
        header('Cache-Control: max-age=0'); //no cache
        $objWriter = PHPExcel_IOFactory::createWriter($this->excel, 'Excel5');
        // Forzamos a la descarga
        $objWriter->save('php://output');
    }
 
    ...
}

Como habéis podido observar, el controlador llama a la librería que nosotros hemos creado, y con ella se crea una función que genera el excel a descargar. Atentos que en el código de ejemplo he puesto puntos suspensivos porqué indico que ahí puede ir más código.

Y ya por último, sólo nos queda llamar desde una vista a la función del controlador para que genere el excel:

1
2
3
4
// Contenido fichero /application/views/jugadores.php
...
<a href="<?php echo base_url(); ?>jugadores/exportar2excel" target="_blank">Descargar excel</a>
...

Ahora el primer paso de crear el excel y descargarlo en CodeIgniter ya lo sabéis, ahora es cosa vuestra rellenar ese excel con el contenido que queráis…

Artículos relacionados

Frameworks para php Cuando hay que crear proyectos serios hay que recurrir a un Framework que lo apoye. La palabra seriedad la aplico a proyectos medianos-grandes que nec...
CodeIgniter – Seguridad – No permitir ... Cuando de seguridad se trata, todo es poco. A la hora de programar, y mas concretamente configurar el Framework con el que trabajemos, es un punto que...
CodeIgniter – Genera un fichero CSV a partir... Si utilizáis el FrameWork CodeIgniter, generar ficheros CSV a partir de una consulta es relativamente sencillo. Os explicamos cómo. Vamos a ir ...
CodeIgniter – Ficheros a modificar si cambia... Trabajas con CodeIgniter en local. Acabas tu proyecto y ahora toca moverlo a producción. Cambiamos de servidor, de base de datos... Qué ficheros debem...

Deja un comentario

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

*