Jak poprawnie używać PHPExcel z Symfony 2
I need to use PHPExcel
z projektem Symfony2
. Czy ktoś wie jak poprawnie skonfigurować projekt do korzystania z biblioteki? Czy powinienem umieścić go w katalogu dostawców? Co należy zmienić w plikach konfiguracyjnych itp?
6 answers
Jeśli używasz composer do zarządzania projektem, możesz po prostu zmienić composer.plik json:
"autoload": {
"psr-4": {
"": "src/",
"": "vendor/phpoffice/phpexcel/Classes/"
},
"classmap": [
"app/AppKernel.php",
"app/AppCache.php"
]
},
Następnie dodaj
use PHPExcel;
use PHPExcel_IOFactory;
Do pliku kontrolera i możesz użyć PHPExcel w następujący sposób:
$objPHPExcel = new PHPExcel();
Mam nadzieję, że to pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-01 02:28:47
Właściwie, aby zrobić to dobrze, musisz wykonać kolejne kroki:
- Edytuj swój plik
deps
i dodaj zależność zPHPExcel
[PHPExcel] git=http://github.com/PHPOffice/PHPExcel.git target=/phpexcel version=origin/master
-
Uruchom
php bin/vendors install
w celu zainstalowania wszystkich brakujących zależności (PHPExcel
w naszym przypadku) Aktualizacja sekcji prefiksy w
app/autoload.php
:
$loader->registerPrefixes(array( // ... 'PHPExcel' => __DIR__.'/../vendor/phpexcel/Classes', ));
- zrobione. Teraz możesz go użyć w kontrolerze pakietu (kod oparty na przykładzie
PHPExcel
zTests/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();
}
}
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-01-29 16:59:33
- Skopiuj bibliotekę do katalogu dostawców.
-
Konfiguracja autoloadera w pliku bootstrap:
$loader->registerPrefixes(array( // Swift, Twig etc. 'PHPExcel' => __DIR__ . '/../vendor/phpexcel/lib/PHPExcel' ));
To wszystko.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-07-02 15:00:49
Właściwie najlepszym rozwiązaniem jest użycie https://github.com/liuggio/ExcelBundle . Próbowałem użyć rozwiązania @Crozin, ale nadal otrzymywałem błąd dotyczący IOFactory:: createWriter. Mam nadzieję, że to pomoże, Simone
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-04-18 09:00:27
Od wersji Symfony 2.3 możesz teraz to zrobić:
...
"require": {
...
"phpoffice/phpexcel": "dev-master"
...
},
...
Następnie po prostu uruchom composer update
i zależności zostaną rozwiązane automatycznie.
Lub możesz zrobić composer require phpoffice/phpexcel:dev-master
, jeśli nie chcesz zadzierać z plikiem composer.json
.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-01-07 18:02:36
Z composerem (od Symfony2.1) jest to naprawdę proste, wystarczy tylko zmodyfikować composer.json
.
Nie musisz już rejestrować przestrzeni nazw!
Tylko dwie rzeczy, aby zauważyć:
- odnoszą się do tagów github, znalazłem tylko soltion z typem
package
- podczas zmiany czegoś w kompozytorze.json związany z klasą autoloading, musisz usunąć cały katalog w katalogu
vendor
Oto odnośnik: użyj PHPExcel z kompozytor i Symfony2.2
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:24:55