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

CodeIgniter – Personalizar error404 El FrameWork PHP CodeIgniter permite personalizar nuestra pantalla de Error404. Este error se muestra cuando el servidor no encuentra la página que bu...
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 – Ver si el navegador soporta di... Cuando instalamos un navegador en nuestro sistema operativo, lo hacemos en un idioma. Así, cuando navegamos, nuestro navegador lo hace en un idioma u ...
CodeIgniter – Clase email Primero un pequeño resumen, solamente para refrescar la memoria: Refrescamos la memoria Dónde se configura el email Antes de enviar emails, hay q...

Deja un comentario

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

*