0

ライブラリ PHPWord と PHPExcel の両方を ZendFramework2 の 2 つのライブラリとして使用しようとしています。つまり、それらを 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__));



}
}

` しかし、クラスはロードされていません

次のエラーが表示されます

( ! ) 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

誰でも私を助けてくれますか?

4

6 に答える 6

1

「クラシック」スケルトンを使用する場合

ライブラリをダウンロードします (たとえば、MyApp/vendor/library/ 内)。Web サイトは次のとおりです: http://phpexcel.codeplex.com/

PHPExcel のアーキテクチャはプレフィックス (zf1 など) を使用して作成されているため、私にとっては、次のように "Zend\Loader\ClassMapAutoloader" を使用する方が簡単です。モジュールのファイル autoload_classmap を変更します。

<?php
return array('PHPExcel'=>__DIR__.'/../../vendor/library/PhpExcel/PHPExcel.php',);

したがって、次を使用できます。

$excel = new \PHPExcel();
于 2013-09-13T07:28:21.057 に答える
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 

おそらく、これはあなたのライブラリを持つ場所であるべきだPHPExcelと思います

于 2013-03-25T12:08:00.467 に答える
0

これが、ZF2での問題を解決したものです。

これを追加しました

/vendor/composer/autoload_namespaces:

'PHPExcel' => array($vendorDir . '/zendframework/zendframework/library/Zend/PHPExcel/'),

そしてコントローラーでクラスをインスタンス化します:

$objPHPExcel = new \PHPExcel();
于 2015-08-11T13:49:30.757 に答える
0

@ro-ko さんの提案通り、フォルダは vendor に置くべきなので、

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/',
);
于 2013-03-25T13:26:14.527 に答える