PHPExcel与Zend框架的集成
如何将集成到我的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: 现在我还想在我的一个控
/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',看起来很像我想要的解决方案。我尝试了一下。谢谢。