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
- Descargar la extensión de Yii YiiExcel -> https://github.com/marcovtwout/yii-phpexcel
- Descomprimir y copiar el directorio en protected/extensions/phpexcel
- Descargar PHPExcel -> https://github.com/PHPOffice/PHPExcel/
- Descomprimir y copiar los archivos que están dentro del directorio Clases a protected/extensions/phpexcel/vendor
– Generar el archivo de hoja de calculo
En cualquier action de un controlador coloquen:
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; }
Cuando llamen la acción el navegador expulsara el archivo para su descarga o abrir con.
Notas:
- El uso de la extensión oficial de Yii ( http://www.yiiframework.com/extension/yiiexcel/ ) es muy engorroso para poner en marcha.
- Esta entrada se realizo usando la versión 1.8.0 estable a la fecha (31/10/2015) de PHPExcel.
- Otros ejemplos de opciones para su hoja de calculo los encuentra en:
https://github.com/PHPOffice/PHPExcel/tree/1.8/Examples
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
En caso de usar Yii2 https://github.com/moonlandsoft/yii2-phpexcel
Nice!!
Reblogueó esto en DominandoPHP.