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:
[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:
- 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.