Интеграция PHPExcel в Zend Framework - PullRequest
7 голосов
/ 20 января 2011

как мне интегрировать PHPExcel в мое приложение Zend.

Моя фактическая структура папок следующая:

/application
  controllers
  views  
  etc...
/library
  My
  Zend
  PHPExcel
/public
  index.php

Я уже включаю «Мои» библиотеки, используя (в index.php):

require_once 'Zend/Loader/Autoloader.php';
$autoloader = Zend_Loader_Autoloader::getInstance();
$autoloader->registerNamespace('My_');

Теперь я также хочу использовать PHPExcel внутри одного из моих контроллеров, например:

$exc = PHPExcel_IOFactory::load('test.xls');
$excelWorksheet = $exc->getActiveSheet();

Что мне нужно сделать, чтобы заставить его работать и избавиться от Class 'PHPExcel_IOFactory' not found исключения?

Спасибо.
-lony

P.S .: Простой $autoloader->registerNamespace('PHPExcel_'); не работает. Я проверял это.

Ответы [ 6 ]

9 голосов
/ 26 января 2011

Поместите библиотеку PHPExcel в папку / library, например:

/application
...
/library
    /PHPExcel
    /PHPExcel.php

Далее, в файле конфигурации application.ini добавьте следующее:

autoloaderNamespaces[] = "PHPExcel_"
autoloaderNamespaces[] = "PHPExcel"

Это должно сделать это. Автозагрузчик позаботится обо всем остальном, и вы можете просто начать использовать пример кода для чтения файла Excel.

Обновление : добавлено дополнительное автозагрузчик Namespace в соответствии с предложением комментаторов

0 голосов
/ 11 ноября 2016

У меня такая же проблема, и я решил ее, обновив композитор и в папке моего проекта phpoffice, сохраненный в модуле вендора (не в lib). И добавление "\" на PHPExcel_IOFactory, где бы вы ни видели.

0 голосов
/ 24 января 2016

Дополнительно я добавил «\» в строку, где PHPExcel_IOFactory использует In Controller Class:

public function reporteauditoriaAction()
{
    $objPHPExcel = new \PHPExcel();
    $objPHPExcel->createSheet();
    $objPHPExcel->getActiveSheet()->setCellValue('A1', 'Alejin Wbn');
    $objWriter = \PHPExcel_IOFactory::createWriter($objPHPExcel, "Excel2007");
    $objWriter->save("pruebaPhpExcelZend.xlsx"); 
    //$objPHPExcel->disconnectWorksheets();
    //unset($objPHPExcel);
    $consulta= "Reporte Auditoria, Reconocio los Archivos";
    $vista = new ViewModel(array( "consulta"=>$consulta));
    return $vista;        
}
0 голосов
/ 15 мая 2013

Я знаю, что прошло 2 года с тех пор, как вопрос задан, но это может кому-то помочь; самый простой способ (не оптимальный) - извлечь папку PHPExcel из вашей Public, а затем просто использовать старый способ ex; (в действиях вашего контроллера):

                include 'PHPExcel.php';
                include 'PHPExcel/Writer/Excel2007.php';

                $myobject = new PHPExcel();
0 голосов
/ 27 мая 2011

Он должен быть в вашем пути включения.

Если вам когда-нибудь понадобится специальный автозагрузчик для других библиотек, которые не следуют PSR-0, есть и это: Автозагрузка PhpThumb с Zend Framework (отказ от ответственности: я автор).

0 голосов
/ 20 января 2011

Я нашел одно решение:

require_once 'PHPExcel / PHPExcel / IOFactory.php';

Если у кого-то есть лучшее, пожалуйста, продолжайте писать!*

@ BoltClock: спасибо за обновление тегов.

...