Generar y Leer archivos excel (xls) con KumbiaPHP

De KumbiaPHP Framework Wiki
Revisión del 21:03 24 oct 2010 de 190.160.154.245 (discusión) (Página creada con '= 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 vea...')
(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)

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.