Comment utiliser PHPExcel correctement avec Symfony 2

j'ai besoin d'utiliser PHPExcel avec un Symfony2 projet. Quelqu'un sait comment configurer le projet correctement pour utiliser la bibliothèque? Dois-je le mettre dans le répertoire des fournisseurs? Qu'est-ce qui devrait être modifié dans les fichiers de configuration, etc.?

15
demandé sur gakhov 2011-06-19 18:09:06

6 réponses

si vous utilisez composer pour gérer votre projet, vous pouvez simplement changer le compositeur.fichier json:

"autoload": {
    "psr-4": {
        "": "src/",
        "": "vendor/phpoffice/phpexcel/Classes/"
    },
    "classmap": [
        "app/AppKernel.php",
        "app/AppCache.php"
    ]
},

puis Ajouter

use PHPExcel;
use PHPExcel_IOFactory;

à votre fichier de contrôle, et vous pouvez utiliser le PHPExcel comme ceci:

$objPHPExcel = new PHPExcel();

j'Espère que ça aide.

5
répondu PengWei 2017-06-01 02:28:47

en Fait, pour faire correctement, vous devez suivre les étapes suivantes:

  • Modifier deps fichier et ajouter des dépendances à partir du PHPExcel
[PHPExcel]
git=http://github.com/PHPOffice/PHPExcel.git
target=/phpexcel
version=origin/master
  • Exécuter php bin/vendors install pour installer toutes les dépendances manquantes (PHPExcel dans notre cas)

  • mise à jour de la section préfixes dans app/autoload.php:

$loader->registerPrefixes(array(
    // ...
    'PHPExcel'         => __DIR__.'/../vendor/phpexcel/Classes',
));
  • fait. Maintenant, vous pouvez l'utiliser dans votre contrôleur de bundle (code basé sur PHPExcel exemple Tests/01simple-download-xls.php):
<?php
namespace Demo\MyBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Response;
use PHPExcel;
use PHPExcel_IOFactory;

class DemoController extends Controller
{
   public function demoAction()
   { 
       $response = new Response();

       // Create new PHPExcel object
       $objPHPExcel = new PHPExcel();

       // Set document properties
       $objPHPExcel->getProperties()->setCreator("Me")
                   ->setLastModifiedBy("Someone")
                   ->setTitle("My first demo")
                   ->setSubject("Demo Document");
       // Add some data
       $objPHPExcel->setActiveSheetIndex(0)
                   ->setCellValue('A1', 'Hello')
                   ->setCellValue('B2', 'world!')
                   ->setCellValue('C1', 'Hello')
                   ->setCellValue('D2', 'world!');
       // Set active sheet index to the first sheet
       $objPHPExcel->setActiveSheetIndex(0);

       // Redirect output to a client’s web browser (Excel5)
       $response->headers->set('Content-Type', 'application/vnd.ms-excel');
       $response->headers->set('Content-Disposition', 'attachment;filename="demo.xls"');
       $response->headers->set('Cache-Control', 'max-age=0');
       $response->prepare();
       $response->sendHeaders();
       $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5');
       $objWriter->save('php://output');
       exit();
   }
}
14
répondu gakhov 2014-01-29 16:59:33
  1. copier la bibliothèque dans le répertoire de vos fournisseurs.
  2. configurer autoloader dans votre fichier bootstrap:

    $loader->registerPrefixes(array(
        // Swift, Twig etc.
        'PHPExcel' => __DIR__ . '/../vendor/phpexcel/lib/PHPExcel'
    ));
    
  3. C'est tout.

11
répondu Crozin 2011-07-02 15:00:49

en fait la meilleure solution est d'utiliser https://github.com/liuggio/ExcelBundle