Existen muchas maneras en las que se puede extender un FrameWork y utlizar librerías externas. En este caso usaremos la técnica utilizada en el libro de «Yii 1.1 Application Development Cookbook»
OJO: No es que haga publicidad al libro, simplemente a mi me ha servido bastante como referencia.
PHPExcel es una librería que permite la escritura y lectura de formatos como excel, excel 2007, Office Open XML, CSV, OpenOffice Calc, Gnumeric, PDF, HTML, entre otros. Si te interesa ver todas las caracteristicas revisa la página de features de PHPExcel. ( No es la idea de este tutorial explicar más sobre esta librería.)
Que es lo que necesitamos:
- Una aplicación en YII
- La librería PHPExcel.
- Primero creamos la carpeta vendors bajo la carpeta protected (protected/vendors). Asumiendo que tu carpeta de archivos restringida es llamada protected.
- Copiamos la carpeta PHPExcel y el archivo PHPExcel.php a la carpeta vendors. ( Estos están bajo la carpeta Classes en el archivo descargado )
- En el controlador que queremos utilizar la librería importamos la librería. En nuestro caso :
Yii::import('application.vendors.*');
- Requerimos la clase de PHPExcel :
require_once(‘PHPExcel.php’); - Y ahora simplemente utilizamos la librería como explicita el proveedor :).
El siguiente es un ejemplo de método para probar que la librería esté funcionando:
public function actionExcel() {
Yii::import('application.vendors.*');
require_once('PHPExcel.php');
$objPHPExcel = new PHPExcel();
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A1', 'Hello')
->setCellValue('B2', 'world!')
->setCellValue('C1', 'Hello')
->setCellValue('D2', 'world!');
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue('A4', 'Miscellaneous glyphs')
->setCellValue('A5', 'eaeuaeioueiuyaouc');
$objPHPExcel->getActiveSheet()->setTitle('Simple');
$objPHPExcel->setActiveSheetIndex(0);
ob_end_clean();
ob_start();
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment;filename="test.xls"');
header('Cache-Control: max-age=0');
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
$objWriter->save('php://output');
}
Este es el ejemplo que viene con la librería. No se asombre si ven el mismo en más de un lugar. Esto puedo apostar que le salvará la vida a más de una persona. Para descargar el ejemplo haz click a continuación.