Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/api/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHPExcel与Zend框架的集成_Php_Zend Framework_Phpexcel - Fatal编程技术网

PHPExcel与Zend框架的集成

PHPExcel与Zend框架的集成,php,zend-framework,phpexcel,Php,Zend Framework,Phpexcel,如何将集成到我的Zend应用程序中 我的实际文件夹结构如下所示: /application controllers views etc... /library My Zend PHPExcel /public index.php autoloaderNamespaces[] = "PHPExcel_" autoloaderNamespaces[] = "PHPExcel" 我已经通过使用(在index.php中)包含了“我的”libs: 现在我还想在我的一个控

如何将集成到我的Zend应用程序中

我的实际文件夹结构如下所示:

/application
  controllers
  views  
  etc...
/library
  My
  Zend
  PHPExcel
/public
  index.php
autoloaderNamespaces[] = "PHPExcel_"
autoloaderNamespaces[] = "PHPExcel"
我已经通过使用(在index.php中)包含了“我的”libs:

现在我还想在我的一个控制器中使用,如:

$exc = PHPExcel_IOFactory::load('test.xls');
$excelWorksheet = $exc->getActiveSheet();
我必须做些什么才能使它正常工作并消除类“PHPExcel\u IOFactory”找不到的异常

谢谢。
-孤独的

附言:一个简单的
$autoloader->registerNamespace('PHPExcel_')不工作。我对它进行了测试。

我找到了一种解决方案:

需要一次 'PHPExcel/PHPExcel/IOFactory.php'

如果有人有更好的,请继续发布


@BoltClock:感谢您更新标记。

将PHPExcel库放入/library文件夹,如下所示:

/application
...
/library
    /PHPExcel
    /PHPExcel.php
接下来,在application.ini配置文件中,添加以下内容:

/application
  controllers
  views  
  etc...
/library
  My
  Zend
  PHPExcel
/public
  index.php
autoloaderNamespaces[] = "PHPExcel_"
autoloaderNamespaces[] = "PHPExcel"
应该这样做。Autoloader负责剩下的工作,您可以开始使用示例代码读取Excel文件


更新:按照评论员的建议添加了额外的Autoloader命名空间

它需要位于您的包含路径中


如果您需要为其他不遵循PSR-0的库定制自动加载器,也可以这样做:(免责声明:我是作者)。

我知道问题提出已经两年了,但它可能会帮助某些人; 最简单的方法(不是最佳方法)是提取公共文件夹中的PHPExcel文件夹,然后只使用旧方法; (在控制器操作中):

此外,我在PHPExcel\u IOFactory在控制器类中使用的行上添加了一个“\”:

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;        
}

我也有同样的问题,我解决了它,更新了composer,并在我的项目文件夹phpoffice中保存在供应商模块中(不是在lib中)。
然后在您所看到的PHPExcel\u IOFactory上添加“\”。

好吧,从您上面发布的代码片段来看,您的问题非常明显,请将所有PHPExcel源代码上移一级,这样IOFactory.php位于library/PHPExcel/IOFactory.php而不是library/PHPExcel/PHPExcel/IOFactory.php中。这应该可以解决问题(您可以一次性放弃require_)。如我在问题中所述,我尝试使用
$autoloader->registerNamespace('PHPExcel_')并且它不工作。您的解决方案仅将设置从
index.php
移动到
application.ini
,但它仍然没有运行。您的/library文件夹中是否有相同的设置?基本PHPExcel.php文件位于/library下,其余类位于/library/PHPExcel下。我昨天刚刚实现了这个,没有任何问题。唯一的问题是,它使得添加PHPExcel作为svn:external变得很困难(PHPExcel.php使用单独的external),或者不可能。因此我将PHPExcel库放在/library文件夹中,将行添加到ini文件中,并(!)更新了我的index.php文件:
set\u include\u path(introde(路径分隔符,数组(realpath(APPLICATION_PATH./../library')、realpath(APPLICATION_PATH./../library/PHPExcel')、get_include_PATH());
我是这样做的,但在控制器中调用$xlsObj=new PHPExcel();它返回错误致命错误:在…中找不到类'PHPExcel',看起来很像我想要的解决方案。我尝试了一下。谢谢。