как я могу интегрировать 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, вы увидите.