我尝试将两个库PHPWord和PHPExcel用作ZendFramework2中的两个库 也就是说将它们放在Zend Framework 2的/ lib中并使用
将它们加载到我的控制器中在我的autoload.php中,我将以下内容
<?php
// autoload.php generated by Composer
require_once __DIR__ . '/composer' . '/autoload_real.php';
return ComposerAutoloaderInit689ffe38af096b92264c8f237441d64e::getLoader();
require_once 'Zend/Loader/Autoloader.php';
$loader = Zend_Loader_Autoloader::getInstance();
$loader->autoloadernamespaces[] = "Excel_";
$loader->registerNamespace('Excel_');
$loader->setFallbackAutoloader(true);
if ($configSection == 'development')
{
$loader->suppressNotFoundWarnings(false);
}
我的控制器是:
<?php
namespace Auth\Controller;
use Zend\Mvc\Controller\AbstractActionController;
use Zend\Excel\PHPExcel;
class AuthController extends AbstractActionController
{
public function LoginAction()
{
$objPHPExcel = new PHPExcel_Reader_Excel5();
$document = $objPHPExcel->load('example1.xls');
echo date('H:i:s') , " Données Ajoutées Avec Succés" ;
$document->setActiveSheetIndex(0)
->setCellValue('A1', 'Mike')
->setCellValue('D2', 'Spils);
// Save Excel5 file
$objWriter = PHPExcel_IOFactory::createWriter($document, 'Excel5');
$objWriter->save(str_replace('.php', '.xls', __FILE__));
}
}
` 但是classe没有加载
我收到以下错误
( ! ) Fatal error: Class 'Auth\Controller\PHPExcel_Reader_Excel5' not found in C:\wamp\www\zend\module\Auth\src\Auth\Controller\AuthController.php on line 14
任何人都可以帮助我pleeeeaase?
答案 0 :(得分:7)
如果您使用composer加载zendframework,请尝试使用composer.php加载phpExcel lib。
从项目文件夹中的命令行运行以下命令:
php composer.phar selfupdate
php composer.phar require phpoffice/phpexcel
在控制器方法中访问:
$excelObj = new \PHPExcel();
它对我有用。
答案 1 :(得分:1)
如果使用“经典”骷髅
下载库(例如在MyApp / vendor / library /中) 该网站是:http://phpexcel.codeplex.com/
PHPExcel的体系结构由前缀(如zf1)构成,因此对我来说,使用“Zend \ Loader \ ClassMapAutoloader”更容易: 修改模块的文件autoload_classmap
<?php
return array('PHPExcel'=>__DIR__.'/../../vendor/library/PhpExcel/PHPExcel.php',);
所以你可以使用:
$excel = new \PHPExcel();
答案 2 :(得分:0)
我还没有任何使用ZF2的经验。但我很确定你正在注册一个错误的命名空间,它应该是:
$loader->autoloadernamespaces[] = "PHPExcel_";
$loader->registerNamespace('PHPExcel_');
<击> 修改强> 撞击>
<击>您在此位置的Zend/Excel/PHPExcel
有PHPExcel库吗?
再好吧,我不确定,但它不应放在Zend的核心库中。
use PHPExcel\Reader\Excel5;
它应该与Zend的库并行放置。
- Zend/
- PHPExcel/
击> <击> 撞击> 编辑2
如果这是Zendframework 2文件夹结构的方式:
- vendor/
- zendframework/zendframework/library/Zend
- PHPExcel/
- autoload.php
也许这应该是我认为<{1}}库的位置
答案 3 :(得分:0)
根据@ ro-ko的建议,您应该将文件夹放在供应商中,所以
vendor/PHPExcel
然后打开vendor / composer / autoload_namespaces.php
你会看到类似这样的东西
<?php
// autoload_namespaces.php generated by Composer
$vendorDir = dirname(__DIR__);
$baseDir = dirname($vendorDir);
return array(
'Zend\\' => $vendorDir . '/zendframework/zendframework/library/',
'ZendTest\\' => $vendorDir . '/zendframework/zendframework/tests/',
);
只需添加命名空间和该数组的路径,例如......
return array(
'Zend\\' => $vendorDir . '/zendframework/zendframework/library/',
'ZendTest\\' => $vendorDir . '/zendframework/zendframework/tests/',
'PHPExcel\\' => $vendorDir . '/PHPExcel/',
);
答案 4 :(得分:0)
这就解决了我在ZF2中遇到的问题。
将此添加到
/供应商/作曲/ autoload_namespaces:
'PHPExcel' => array($vendorDir . '/zendframework/zendframework/library/Zend/PHPExcel/'),
在控制器实例化类:
$objPHPExcel = new \PHPExcel();
答案 5 :(得分:0)
问题与自动加载PHPExcel类有关。 vendor/autoload.php
文件是自动生成的文件。其含义是&#34;不要编辑此文件并期望您的更改坚持&#34;。
或者,为了避免自动加载PHPExcel类出现问题,可以使用zf2模块PHPOffice/PHPExcel将MvlabsPHPExcel库轻松集成到zend框架2中。
之后,您需要启用MvlabsPHPExcel
模块:
<?php
return [
'modules' => [
// ...
'MvlabsPHPExcel',
],
// ...
];
然后你就可以在控制器里面使用了。
$phpExcelObject = $this->serviceLocator->get('mvlabs.phpexcel.service')->createPHPExcelObject();