Generar reportes en excel utilizando Symfony2

junio 28, 2012 at 17:21 4 comentarios

Instalación del Bundle para Excel

  • Agregar el siguiente texto al final del archivo de dependencias:
    [n3bStreamresponse]
        git=https://github.com/liuggio/Symfony2-StreamResponse.git
        target=n3b/src/n3b/Bundle/Util/HttpFoundation/StreamResponse
    
    [phpExcel]
        git=https://github.com/liuggio/PHPExcel.git
        target=phpexcel
    
    [liuggioExcelBundle]
        git=http://github.com/Liuggio/ExcelBundle.git
        target=/bundles/Liuggio/ExcelBundle
    
  • Ejecutar el comando:
    php bin/vendors install

    O en su defecto (de ser necesario) el comando:

    php bin/vendors install --reinstall
  • Registrar el Bundle en app/AppKernel.php:
    $bundles = array(
            // ...
            new Liuggio\ExcelBundle\LiuggioExcelBundle(),
        );
    
  • Registrar el namespace en app/autoload.php:
    $loader->registerNamespaces(array(
             // ...
             'n3b\\Bundle\\Util\\HttpFoundation\\StreamResponse'  => __DIR__.'/../vendor/n3b/src',
    
             'liuggio'              => __DIR__.'/../vendor/bundles',
         ));
    
  • Registrar el prefijo para la librería (también en el archivo app/autoload.php):
    $loader->registerPrefixes(array(
             'Twig_Extensions_' => __DIR__.'/../vendor/twig-extensions/lib',
             'Twig_'            => __DIR__.'/../vendor/twig/lib',
              // ...
             'PHPExcel'         => __DIR__.'/../vendor/phpexcel/lib/PHPExcel/Classes',
         ));
    

Uso

  • En nuestro Controller creamos una acción como la siguiente:

    /**
    * Función para generar reportes en excel.
    */
    public function excelAction() {

    $xls_service = $this->get('xls.service_xls5');

    $xls_service->excelObj->getProperties()->setCreator("Juan Pérez")
    ->setLastModifiedBy("Tester")
    ->setTitle("Reporte de Prueba")
    ->setSubject("Este es un reporte de prueba")
    ->setDescription("Reporte en excel generado desde symfony para efectos de prueba")
    ->setKeywords("office 2005 openxml php")
    ->setCategory("Test");

    $xls_service->excelObj->setActiveSheetIndex(0)
    ->setCellValue('A1', 'Hola')
    ->setCellValue('B2', 'mundo!');
    $xls_service->excelObj->getActiveSheet()->setTitle('Prueba Simple');
    // Set active sheet index to the first sheet, so Excel opens this as the first sheet
    $xls_service->excelObj->setActiveSheetIndex(0);

    //crear la respuesta
    $response = $xls_service->getResponse();
    $response->headers->set('Content-Type', 'text/vnd.ms-excel; charset=utf-8');
    $response->headers->set('Content-Disposition', 'attachment;filename=reporteDePrueba.xls');

    // Si usa una conexión https debe configurar estos dos header para compatibilidad con IE headers->set('Pragma', 'public');
    $response->headers->set('Cache-Control', 'maxage=1');
    return $response;
    }

  • Luego creamos una ruta correspondiente con esa acción:

    Entry filed under: frameworks, php, programación, symfony. Tags: , , , .

Habilitar el editor WYSIWYG tinymce para Symfony 2 Habilitar la seguridad para un Bundle en Symfony2

4 comentarios Add your own

  • 1. Hely Suarez Marin  |  agosto 25, 2012 en 02:53

    Una pequeña correccion que muy seguramente fue de escritura; en el registro del namespace en el app/autoload, liuggio lo escribiste todo en minuscula y la primera letra debe ser mayuscula osea queda toda la linea asi ‘Liuggio’ => __DIR__.’/../vendor/bundles’, ya que de lo contrario no reconocera la clase y arrojara error.

    Responder
  • 2. Jonathan Araul  |  agosto 31, 2012 en 07:57

    Saludos, disculpe la molestia, pero realizo todos los pasos y me da problemas con las librerias de doctrine, con que version de symfony2 Ud trabajo?, a mi me produce los errores con Symfony_Standard_2.0.17.

    Responder
    • 3. constrict0r  |  abril 13, 2013 en 11:44

      Es mejor que actualices a la última versión porque es mejor usar composer ya que facilita mucho el trabajo: https://hackurbano.net/2013/04/13/actualizando-a-symfony-2-2/

      Responder
      • 4. Jonathan Araul  |  septiembre 27, 2013 en 18:06

        Ud tenía toda la razón, trabajar con las últimas versiones de Symfony es muchisimo mejor, me encanta ese framework, gracias.

Dejáte un comentario

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

Trackback this post  |  Subscribe to the comments via RSS Feed


Digo yo

Que dura está la vida

Dice Jhon Lennon

La vida es lo que pasa mientras haces planes

Digo yo

Dónde haya un computín esté dónde esté algo comenzará en cero

Acerca de Mi:


Hell-Out world!!

Dice Einstein

Dios no juega a los dados

Dice Niels Bohr

Einstein no le diga a Dios lo que tiene que hacer

Dice el Che:

Seamos realistas y hagamos lo imposible.

Dice Goethe:

Lo que no comprendemos no lo poseemos.

Digo yo:

Hay que tratar de travesear todo

Dice Oscar Wilde:

Cualquier hombre puede llegar a ser feliz con una mujer, con tal de que no la ame.

Digo yo:

De fijo dijo eso porque era homosexual.

Artículos

junio 2012
L M X J V S D
« Oct   Ago »
 123
45678910
11121314151617
18192021222324
252627282930  

A %d blogueros les gusta esto: