2012-03-22 6 views
0

Im пытается включить PHPExcel LIB к Yii, положить PHPExcel.php в корне расширения, рядом PHPExcel папку и добавил, что код в config/main.phpYii включают PHP Excel

// application components 
'components'=>array(
    'excel'=>array(
    'class'=>'application.extensions.PHPExcel', 
), 

изменить /protected/extensions/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; 
}//  function Register() 

Затем, пытаясь создать объект PHPExcel $objPHPExcel = new PHPExcel(); , но с ошибкой: include(PHPExcel.php) [<a href='function.include'>function.include</a>]: failed to open stream: No such file or directory в Z:\home\yii.local\www\framework\YiiBase.php(418)

+0

Попробуйте полный путь ... – Baba

ответ

1

Увидев ваш другой вопрос, я думаю, вы нашли ответ. Увы ... вы должны использовать импорт в конфигурации, а не в компонентах. Что-то вроде этого:

// autoloading model and component classes 
'import'=>array(
    'application.models.*', 
    'application.components.*', 
    'application.vendors.phpexcel.classes.*', 
), 

Вы также должны поместить phpexcel в папку под названием vendors, а не расширения. Это стороннее программное обеспечение и не распространяется на Yii.

Здесь также есть руководство, которое работает с отключением автозагрузки Yii, вместо того, чтобы отключать автозагрузку PHPExcel. http://www.yiiframework.com/wiki/101/how-to-use-phpexcel-external-library-with-yii/

4

попробуйте, это сработает для меня.

  • Скопировать файлы. Скопируйте все файлы PHPExcel в ROOT \ protected \ vendors \ PHPExcel. Эта папка PHPExcel - это переименованная папка. Как это:
 
ROOT\protected\vendors\PHPExcel\ 
           PHPExcel.php 
           PHPExcel\... 
             all files php 
  • нагрузки на clases PHPExcel. Измените файл ROOT \ index.php. Вы измените способ запуска приложения yii.
 
    $app = Yii::createWebApplication($config); 
    // adding PHPExcel autoloader 
    Yii::import('application.vendors.*'); 
    require_once "PHPExcel/PHPExcel.php"; 
    require_once "PHPExcel/PHPExcel/Autoloader.php"; 
    Yii::registerAutoloader(array('PHPExcel_Autoloader','Load'), true); 
    $app->run(); 
  • Протестируйте PHPExcel. Создайте действие в любом контроллере
 
    public function actionExcel(){ 
     $objPHPExcel = new PHPExcel(); 
     $objPHPExcel->setActiveSheetIndex(0) 
     ->setCellValue('A1', 'Hello') 
     ->setCellValue('B2', 'world!') 
     ->setCellValue('C1', 'Hello') 
     ->setCellValue('D2', 'world!'); 

     $objPHPExcel->getActiveSheet()->setTitle('Simple'); 

     $objPHPExcel->setActiveSheetIndex(0); 

     ob_end_clean(); 
     ob_start(); 

     header('Content-Type: application/vnd.ms-excel'); 
     header('Content-Disposition: attachment;filename="test.xls"'); 
     header('Cache-Control: max-age=0'); 
     $objWriter = PHPExcel_IOFactory::createWriter($objPHPExcel, 'Excel5'); 
     $objWriter->save('php://output'); 
    } 
+0

Спасибо Это было решить мою проблему. : D –

1

Попробуйте это:

 spl_autoload_unregister(array('YiiBase','autoload'));    
     Yii::import('ext.phpexcel.Classes.PHPExcel', true); 
     $objPHPExcel = new PHPExcel(); 
     $activeSheet = $objPHPExcel->getActiveSheet(); 
     spl_autoload_register(array('YiiBase','autoload')); 
Смежные вопросы