generar archivos Excel desde Yii

Como generar archivos Excel desde Yii Framework

Con esta entrada usted sera capaz de generar hojas de calculo como archivos excel ó libreoffice, desde el Framework de PHP Yii. Para ello usaremos una extensión que integra PHPExcel a nuestro sistema en Yii.

– Instalar yii-phpexcel

– Generar el archivo de hoja de calculo

En cualquier action de un controlador coloquen:

[sourcecode language=»php»]

public function actionArmaHojaCalculo(){

Yii::import(‘ext.phpexcel.XPHPExcel’);
$objPHPExcel = XPHPExcel::createPHPExcel();

// Set document properties
$objPHPExcel->getProperties()->setCreator(«Lenin Hernandez – Leninmhs»)
->setLastModifiedBy(«Leninmhs»)
->setTitle(«Generar archivo excel Office 2007 XLSX Test Document desde Yii PHP»)
->setSubject(«Office 2007 XLSX Test Document from yii php»)
->setDescription(«Test document for Office 2007 XLSX, generated using PHP classes.»)
->setKeywords(«office 2007 openxml php»)
->setCategory(«Test result file»);
// Add some data
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(‘A1’, ‘Hello’)
->setCellValue(‘B2’, ‘world!’)
->setCellValue(‘C1’, ‘Hello’)
->setCellValue(‘D2’, ‘world!’);
// Miscellaneous glyphs, UTF-8
$objPHPExcel->setActiveSheetIndex(0)
->setCellValue(‘A4’, ‘Miscellaneous glyphs’)
->setCellValue(‘A5’, ‘éàèùâêîôûëïüÿäöüç’);
// Rename worksheet
$objPHPExcel->getActiveSheet()->setTitle(‘Simple’);
// Set active sheet index to the first sheet, so Excel opens this as the first sheet
$objPHPExcel->setActiveSheetIndex(0);
// Redirect output to a client’s web browser (Excel5)
header(‘Content-Type: application/vnd.ms-excel’);
header(‘Content-Disposition: attachment;filename=»01simple.xls»‘);
header(‘Cache-Control: max-age=0’);
// If you’re serving to IE 9, then the following may be needed
header(‘Cache-Control: max-age=1’);
// If you’re serving to IE over SSL, then the following may be needed
header (‘Expires: Mon, 26 Jul 1997 05:00:00 GMT’); // Date in the past
header (‘Last-Modified: ‘.gmdate(‘D, d M Y H:i:s’).’ GMT’); // always modified
header (‘Cache-Control: cache, must-revalidate’); // HTTP/1.1
header (‘Pragma: public’); // HTTP/1.0
$objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, ‘Excel5’);
$objWriter->save(‘php://output’);
exit;

}

[/sourcecode]

Cuando llamen la acción el navegador expulsara el archivo para su descarga o abrir con.

Notas:

  1. El uso de la extensión oficial de Yii ( http://www.yiiframework.com/extension/yiiexcel/ ) es muy engorroso para poner en marcha.
  2. Esta entrada se realizo usando la versión 1.8.0 estable a la fecha (31/10/2015) de PHPExcel.
  3. Otros ejemplos de opciones para su hoja de calculo los encuentra en:

https://github.com/PHPOffice/PHPExcel/tree/1.8/Examples

https://github.com/PHPOffice/PHPExcel/wiki/User%20Documentation%20Overview%20and%20Quickstart%20Guide

4. Si les sale este error: PHP Fatal error:  Class ‘PHPExcel_Shared_ZipStreamWrapper’ not found in /home/leninmhs/www/protocolizacion/index.php on line 22 hagan un aptitude install php-pclzip

3 comentarios en “Como generar archivos Excel desde Yii Framework”

Deja un comentario

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