Интеграция PHPExcel в Zend Framework

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

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

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

Я уже включил 'My' libs, используя (в 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 Exception?

Спасибо.
-lony

PS: простой $autoloader->registerNamespace('PHPExcel_'); не работает. Я протестировал его.

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

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

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

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

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

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

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

require_once 'PHPExcel / PHPExcel / IOFactory.php';

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

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

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

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

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

  include 'PHPExcel.php'; include 'PHPExcel/Writer/Excel2007.php'; $myobject = new PHPExcel(); 

Кроме того, я добавил «\» в строке, где 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; } с 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; } 

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