Desarrollo y Tecnología > Lenguajes de Programación > PHP > Extendiendo YII - Usando PHPExcel como librería externa.

Extendiendo YII – Usando PHPExcel como librería externa.

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:

  1. Una aplicación en YII
  2. La librería PHPExcel.
Que debemos hacer:
  1. Primero creamos la carpeta vendors bajo la carpeta protected (protected/vendors).  Asumiendo que tu carpeta de archivos restringida es llamada protected.
  2. Copiamos la carpeta PHPExcel y el archivo PHPExcel.php a la carpeta vendors. ( Estos están bajo la carpeta Classes en el archivo descargado )
  3. En el controlador que queremos utilizar la librería importamos la librería. En nuestro caso :

    Yii::import('application.vendors.*');
  4. Requerimos la clase de PHPExcel :
    require_once(‘PHPExcel.php’);
  5. 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.

Descargar actionExcel

¡Mantengamos el contacto!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

¡MANTENGÁMONOS EN CONTACTO!

Me encantaría que te mantuvieras al día con el contenido que estoy generando. Recuerda que no es solo el blog, son las redes sociales, libros, y distintos pódcast 😎.

Hago todo lo posible para no hacer Spam,

10 thoughts on “Extendiendo YII – Usando PHPExcel como librería externa.”

  1. tengo este problema hice lo qeu mandaste en la entrada del foro peor me sale el siguiente error

    include(PHPExcel_Shared_String.php): failed to open stream: No such file or directory

    Reply
    • Trata de ver que sea la misma versión del tutorial. Quizás han cambiado algo. De todas formas trataré de revisarlo pronto.

      Reply
  2. Hola, tengo el mismo problema de Oscar Quisbert me sale el error:
    include(PHPExcel_Shared_String.php): failed to open stream: No such file or directory

    Que version de phpExcel se uso para este tutorial ?

    Reply
  3. Saludos mi interrogante es la siguiente a nivel local me crear mi excel pero al ejecutar desde el cliente aunque genera el excel me da error al abrirlo sera porque el servidor esta en ubunto y crea es un acchivo bajo parametros de openoffice

    Reply
    • Mira, el archivo es el mismo. Es posible que algo debas cambiar por compatibilidad. Un ejemplo es usar comillas entre las palabras antes de las comas. Son formatos distintos para los CSV.

      Reply
  4. Hola, soy nuevo en Yii y la verdad nose que debo hacer con la clase que se proporciona aqui http://phpexcel.codeplex.com/workitem/19543 intente guardandola en mis modelos luego la instancie y use la funcion de registrar (justo antes del codigo que genera el excel) peo no funciono. Ojala puedan ayudarme 🙁

    Reply

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Share to...