PHPExcel pomocí composeru

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
phoffman
Člen | 7
+
-2
-

Ahoj,
chci použít ve svém projektu PHPExcel.
Přes composer jsem si nahrál knihovnu:
v příkazovém řádku jsem napsal: composer require PHPOffice\PHPExcel
ve složce vendor mi přibyla složka phpoffice.

Udělal jsem si v adresáři www podsložku xlsx a vložil jsem do ní soubor plan.xlsx.

pak jsem v jednom z presenterů napsal tento kód (dle příkladu na netu)

public function renderExceltest() {
        parent::renderDefault();
        $this->template->subMenu = $this->subMenu();
        //open template excel
        $objPHPExcel = PHPExcel_IOFactory::load("/xlsx/plan.xlsx");
        //modify data
        $objPHPExcel->setActiveSheetIndex(0)
                            ->setCellValue('D8', "Toto jsem napsal v PHP")
                            ->setCellValue('E8', "Toto taky")
                            ->setCellValue('F8', "to bymohlo stačit");
        //save file
        $objWriter = new PHPExcel_Writer_Excel2007($objPHPExcel);
        $objWriter->save("/xlsx/plan2.xlsx");
    }

Dostávám fatal error, že nelze nalézt třídu:
Class 'App\Presenters\PHPExcel_IOFactory' not found

zkoušel jsem do presenteru přidat různé kombinace use PHPOffice…ale nevím co jsem udělal špatně, že se mi nedaří načíst knihovnu.

Šaman
Člen | 2666
+
+5
-

Jedna z nejčastějších chyb, která je tu jen poslední týden už asi třikrát.
Pokud kdykoliv nějaká chyba začíná Class 'App\Presenters\… not found a přitom ta třída není v tomto namespace, pak ti chybí buď

<?php
use PHPExcel_IOFactory;
?>

nebo používej kompletní název i s NS, tedy s lomítkem na začátku

<?php
$objPHPExcel = \PHPExcel_IOFactory::load("/xlsx/plan.xlsx");
?>

Editoval Šaman (13. 4. 2016 1:18)