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.?
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.
en Fait, pour faire correctement, vous devez suivre les étapes suivantes:
- Modifier
deps
fichier et ajouter des dépendances à partir duPHPExcel
[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
exempleTests/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();
}
}
- copier la bibliothèque dans le répertoire de vos fournisseurs.
configurer autoloader dans votre fichier bootstrap:
$loader->registerPrefixes(array( // Swift, Twig etc. 'PHPExcel' => __DIR__ . '/../vendor/phpexcel/lib/PHPExcel' ));
C'est tout.