解決在Yii2中使用PHPExcel出現Class 'app\controllers\PHPExcel' not found的問題


 一、下載PHPExcel
    鏈接地址:https://github.com/PHPOffice/PHPExcel

    二、新建目錄(以Basic版的Yii2為例)

    在/basic/vendor目錄下,建立目錄phpoffice/phpexcel,把下載的PHPExcel文件解壓到新建立的目錄中,最終的目錄結構為:

    /basic/vendor/phpoffice/phpexecel/Classes/PHPExcel

    /basic/vendor/phpoffice/phpexecel/Classes/PHPExcel.php

    三、引入PHPExcel類

    不管是在advanced中還是basic中,因為PHPExcel它是沒有命名空間的,就不能通過Yii中的自動引入功能來自動引入PHPExcel中的類,需要自己來手動引入。假設當前Controller類為SiteController

    方法一:

require dirname(dirname(__FILE__)).'/vendor/phpoffice/phpexcel/Classes/PHPExcel.php';
class SiteController extends Controller {

}

方法二:(本人使用此方式)

    1、修改文件/basic/vendor/composer/autoload_namespace.php,在return array();中增加一行:

'PHPExcel' => array($vendorDir . '/phpoffice/phpexcel/Classes'),

 2、修改文件/basic/vendor/composer/autoload_static.php,找到 public static $prefixesPsr0 = array () 部分,在鍵名P的下面新增PHPExcel的內容,最終結果為:

public static $prefixesPsr0 = array (
    'P' => 
    array (
        'Prophecy\\' => 
        array (
            0 => __DIR__ . '/..' . '/phpspec/prophecy/src',
        ),
        
        /******************新增內容  開始***************/
        'PHPExcel' =>
        array (
            0 => __DIR__ . '/..' . '/phpoffice/phpexcel/Classes',
        ),
        /******************新增內容  結束***************/
    ),
    
    /*...............其他代碼.................*/
    
);

四、使用PHPExcel類

    經過上面的步驟,我們已經把PHpExcel這個類引入進來了。用如下方式來實例化類:

public function actionIndex() {
    $objExcel = new \PHPExcel();
    return $this->render('index');
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM