Hvordan bruke PHPExcel riktig med Symfony 2

stemmer
15

Jeg trenger å bruke PHPExcelmed et Symfony2prosjekt. Noen vet å sette opp prosjektet riktig å bruke biblioteket? Skal jeg sette det i leverandørens katalog? Hva som bør endres i konfigurasjonsfiler etc?

Publisert på 19/06/2011 klokken 14:09
kilden bruker
På andre språk...                            


6 svar

stemmer
14

Egentlig, for å gjøre det riktig må du følge de neste trinnene:

  • Rediger depsfilen og legge avhengighet fraPHPExcel
[PHPExcel]
git=http://github.com/PHPOffice/PHPExcel.git
target=/phpexcel
version=origin/master
  • Kjør php bin/vendors installfor å installere alle manglende avhengigheter ( PHPExceli vårt tilfelle)

  • Oppdater prefiksene seksjon i app/autoload.php:

$loader->registerPrefixes(array(
    // ...
    'PHPExcel'         => __DIR__.'/../vendor/phpexcel/Classes',
));
  • Ferdig. Nå kan du bruke det i din pakke controller (kode basert på PHPExceleksempel fra 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();
   }
}
Svarte 04/11/2012 kl. 19:31
kilden bruker

stemmer
11
  1. Kopier biblioteket til leverandører katalogen.
  2. Konfigurere autolasteren i bootstrap fil:

    $loader->registerPrefixes(array(
        // Swift, Twig etc.
        'PHPExcel' => __DIR__ . '/../vendor/phpexcel/lib/PHPExcel'
    ));
    
  3. Det er alt.

Svarte 19/06/2011 kl. 18:15
kilden bruker

stemmer
10

faktisk den beste løsningen er å bruke https://github.com/liuggio/ExcelBundle . Jeg prøvde å bruke @ Crozin løsning, men jeg var fortsatt får en feilmelding om IOFactory :: createWriter. Håper dette hjelper, Simone

Svarte 18/04/2012 kl. 09:00
kilden bruker

stemmer
7

Per Symfony 2.3, kan du nå gjøre dette:

...
"require": {
    ...
    "phpoffice/phpexcel": "dev-master"
    ...
},
...

Så bare kjøre composer updateog avhengigheter vil løse automatisk.

Eller du kan gjøre composer require phpoffice/phpexcel:dev-masterhvis du ikke ønsker å rote med composer.jsonfilen.

Svarte 04/06/2014 kl. 18:58
kilden bruker

stemmer
4

Hvis du bruker komponisten å administrere prosjektet, kan du bare endre composer.json filen:

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

Legg så til

use PHPExcel;
use PHPExcel_IOFactory;

til kontrolleren fil, og du kan bruke den PHPExcel som dette:

$objPHPExcel = new PHPExcel();

Håper det hjelper.

Svarte 01/06/2017 kl. 02:28
kilden bruker

stemmer
2

Med komponist (siden Symfony2.1) det er veldig enkelt, du trenger bare å endre composer.json.
Du trenger ikke å registrere navne lenger!

Bare to ting, for å legge merke til:

  1. refererer til GitHub koder, jeg bare funnet en soltion med packagetypen
  2. når du endrer noe i composer.json knyttet til klassen last ting, må du fjerne hele katalogen i vendordir

Her er relatert link: bruke PHPExcel med komponist og Symfony2.2

Svarte 25/04/2013 kl. 12:40
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more