解决在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');
}

 

posted @ 2019-08-01 16:05  先生丨孙  阅读(3475)  评论(0编辑  收藏  举报