Generar y Leer archivos excel (xls) con KumbiaPHP
Creando un archivo excel en KumbiaPHP
esto es un tema sencillo, solo hay que implementar las buenas practicas de pogramación.
Para implemantar el tema de las 3 capas veamos un ejemplo sencillo
listado de nombres de usuarios. (id y nombre);
Tabla de usuarios
CREATE TABLE `usuarios` (
`id` int(4) NOT NULL AUTO_INCREMENT,
`nombre` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Programacion MVC
Modelo
Creamos nuestro modelo llamado usuarios.php
<?php
/**
* Generar y Leer archivos excel (xls) con KumbiaPHP
* PHP version 5
* LICENSE
*
*
* Modelo Usuarios
*
* @category app
* @package models
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com>
*/
class Usuarios extends ActiveRecord{
public function findByName($conditions){
return $this->find("nombre like '$conditions'");
}
}
?>
Creamos un controlador.
<?php
/**
* Generar y Leer archivos excel (xls) con KumbiaPHP
* PHP version 5
* LICENSE
*
*
* Controlador Usuarios
*
* @category app
* @package controllers
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com>
*/
Load::lib('excel');
Load::model('usuarios');
class Usuarios extends ApplicationController{
public function sendFile(){
$this->set_response('xls');
$usuarios = new Usuarios();
if(!$this->usuarios = $usuarios->findByName('%')){
Flash::warning('No existen registros para exportar');
$this->render(NULL);
}
}
}
?>
Vista con el nomnbre sendFile.xls.phtml
<?php
/**
* Generar y Leer archivos excel (xls) con KumbiaPHP
* PHP version 5
* LICENSE
*
*
* Vista sendFile
* @category app
* @package views
* @author Fidel Oyarzo <fidel.oyarzo@gmail.com>
*/
//invoco la clase para generar el libro excel
$libro = new Spreadsheet_Excel_Writer();
//creo una hoja, es decir, puedo crear N hojas
$hoja1 = $libro->addWorksheet("Hoja1");
//charset
$hoja1->setInputEncoding('utf-8');
//Formato de letra, en este caso negrita, existen más, números, fecha, etc...
$negrita =& $libro->addFormat();
$negrita->setBold();
//titulos
$hoja1->write(0, 0, "ID", $negrita);
$hoja1->write(0, 1, "NOMBRE", $negrita);
//detalle
$row = 1;
foreach($usuarios as $usuario):
$hoja->write($row, 0, $usuario->id);
$hoja->write($row, 1, $usuario->nombre);
$row++;
endforeach;
$libro->send("Libro1.xls");
$libro->close();
?>
con esto tenemos un ejemplo sencillo y bien hecho, no deben olvidar que una programacion MVC les ayudara con el tiempo a realizar mantenciones y en este caso hacer otra salida que no sea un excel, por ejemplo un pdf, solo hay que crear una vista sin tocar el controlador no el modelo.
El modelo debe tener contacto con la base de datos. el controlador solo envia esos datos a la vista, pero ni uno de los dos deben estar en contacto con la base de datos.