使用Yii自动加载PHPExcel库(包含(PHPExcel_Worksheet_Drawing.php):无法打开流:没有这样的文件或目录)

时间:2014-01-21 07:33:14

标签: php yii phpexcel

我正在使用 Yii框架,我必须加载 PHPExcel 类。

在我的main.php中,我将配置设置为

'import'=>array(
        'application.models.*',
        'application.components.*',
                'application.extensions.*',
                'ext.PHPExcel.PHPExcel',            
    ),

我正在编辑 Autoloader.php 中的注册功能,如下所示

public static function Register() {
        $functions = spl_autoload_functions();

          foreach($functions as $function)
            spl_autoload_unregister($function);
          $functions=array_merge(array(array('PHPExcel_Autoloader', 'Load')), $functions);

          foreach($functions as $function)
            $x = spl_autoload_register($function);
          return $x;
  }

当我致电$objPHPExcel =new PHPExcel();时,它运作良好,

但是当我打电话给$objDrawing = new PHPExcel_Worksheet_Drawing();时它的回复

include(PHPExcel_Worksheet_Drawing.php): failed to open stream: No such file or directory

我的目录结构是:

extensions
    -----PHPExcel
          -------PHPExcel
    ------ PHPExcel.php

感谢您的帮助

2 个答案:

答案 0 :(得分:1)

如果有效,请尝试使用此代码,请注意有双*

Yii::import('ext.PHPExcel.**', true); 

$objDrawing = new PHPExcel_Worksheet_Drawing();
var_dump($objDrawing);

[在Yii版本中测试:1.1.13]

答案 1 :(得分:0)

这个模块最初对我有用。但是后来我添加了 Yii2 并花了很长时间寻找解决问题的方法。对于那些找到这个话题的人,就像我所做的那样,并将 Yii2 添加到 Yii1 中,我会留下这个解决方案。

对我来说首先帮助了这个。

        spl_autoload_unregister(['YiiBase', 'autoload']);
        require_once Yii::app()->params['rootPath'] . '/PHPExcel/Classes/PHPExcel.php';
        spl_autoload_register(['YiiBase', 'autoload']);

当我添加 Yii2 时我改变了

        spl_autoload_unregister(['Yii', 'autoload']);
        spl_autoload_unregister(['YiiBase', 'autoload']);
        require_once Yii::app()->params['rootPath'] . '/PHPExcel/Classes/PHPExcel.php';
        spl_autoload_register(['YiiBase', 'autoload']);
        spl_autoload_register(['Yii', 'autoload']);

并使用

  $objPHPExcel = new \PHPExcel();