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

 1、下載PHPExcel
    連接地址:https://github.com/PHPOffice/PHPExcelphp

    2、新建目錄(以Basic版的Yii2爲例)git

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

    /basic/vendor/phpoffice/phpexecel/Classes/PHPExcelcomposer

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

    3、引入PHPExcel類this

    無論是在advanced中仍是basic中,由於PHPExcel它是沒有命名空間的,就不能經過Yii中的自動引入功能來自動引入PHPExcel中的類,須要本身來手動引入。假設當前Controller類爲SiteControllerspa

    方法一:excel

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

}

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

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

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

 二、修改文件/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',
        ),
        /******************新增內容  結束***************/
    ),
    
    /*...............其餘代碼.................*/
    
);

4、使用PHPExcel類

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

public function actionIndex() {
    $objExcel = new \PHPExcel();
    return $this->render('index');
}
相關文章
相關標籤/搜索