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 redireccionar toda la web a SSL Os indico como redireccionar en una web creada con Codeigniter para que siempra, escriban lo que escriban en la barra de dirección accedan a nuestra w...
CodeIgniter From Scratch Sólo recomendaros este enlace donde encontraréis varios artículos, paso a paso de CodeIgniter. http://code.tutsplus.com/series/codeigniter-fr...
CodeIgniter – Debug e información de forma s... CodeIgniter proporciona una clase que facilita la programación. Activando esta clase desde nuestro controlador, en el momento de mostrar la vista, lis...
CodeIgniter – Ejemplo Hello World Siguiendo con el post de qyer, os adjunto un pequeño vídeo demostrativo de la programación con el Framework PHP llamado CodeIgniter. El ejemplo es el ...

Deja un comentario

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

*