CodeIgniter – Genera un fichero CSV a partir de consulta

Si utilizáis el FrameWork CodeIgniter, generar ficheros CSV a partir de una consulta es relativamente sencillo. Os explicamos cómo en el artículo CodeIgniter – Genera un fichero CSV a partir de consulta.

Vamos a ir preparando el terreno y vamos a ir paso a paso. :

1. Creamos la vista con el siguiente código:

<?php
// Fichero: /application/views/jugadores_csv_view.php 
header("Content-type: text/csv"); 
header("Content-Disposition: attachment; filename="nombredelfichero.csv"); 
header("Pragma: no-cache"); 
header("Expires: 0");   
echo $contenido;
?>

2. Preparamos el modelo con el código que devuelve el texto ya en formato CSV.

// Fichero: /application/models/jugadores_model.php
// Dentro del modelo añadimos el siguiente código
function jugadoresCreateCsv(){
   $sql = "SELECT * FROM jugadores WHERE goles > 5 ORDER BY nombre";
   $query = $this->db->query($sql);
   // Atentos a esta función que transforma el resultado de una query en CSV
   return $this->dbutil->csv_from_result($query);
}

3.1 Ahora le toca al controlador. Vamos al primer paso que consiste en preparar el controlador para poder utilizar la librería dbutil, función csv_from_result que utilitzamos en el

// Fichero: /application/controllers/jugadores.php
// Dentro de la función constructora cargamos la librería dbutil
function __construct(){
	parent::__construct();
	// Modelos
	$this->load->model('jugadores_model');
        $this->load->dbutil();
}

3.2 Y ahora creamos la función a la que llamaremos para crear el fichero y que también irá dentro del controlador.

// Fichero: /application/controllers/jugadores.php
// La función que define la creación del fichero 
public function createcsv(){
        // Los datos
        $data["contenido"]= $this->jugadores->jugadoresCreateCsv();
        // Cargamos la vista preparada con los headers CSV
        $this->load->view('jugadores_csv_view', $data);
}

Resumen del proceso

1. Hemos creado la vista preparada para decirle al navegador que será un fichero CSV
2. Hemos creado el modelo que gracias a la función «csv_from_result» de la librería «dbutil» convierte una query en csv
3. Le decimos al controlador que cargue la librería «dbutil»
4. Creamos la función que carga en la vista que hemos creado un contenido en formato CSV que nos ha creado el modelo.

Bueno, espero que os sirva de ayuda en vuestras creaciones el artículo CodeIgniter – Genera un fichero CSV a partir de consulta.


Más información