Como generar archivos Excel desde Yii Framework

php excel yii

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:



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:

  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

Anuncios

3 comentarios en “Como generar archivos Excel desde Yii Framework

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s