YII使用PHPExcel导入Excel文件的方法

1、下载phpexcel,将压缩包中的classes复制到protected/extensions下并修改为PHPExcel。

2、修改YII配置文件config/main.php
  1. 'import'=>array(  
  2.     'application.extensions.PHPExcel.PHPExcel',  
  3. ),  

(以下处理PHPExcel autoload和YII autoload相冲突的方法任选其一,推荐第4种,最符合YII标准)
3.1、修改PHPExcel中的Autoloader.php
  1. PHPExcel_Autoloader::Register();  
  2. PHPExcel_Shared_ZipStreamWrapper::register();  

修改为
  1. Yii::registerAutoloader(array('PHPExcel_Autoloader','Register'),true);  

3.2、按照下面的代码修改PHPExcel代码目录里的Autoloader.php文件
  1. public static function Register() {  
  2.     /* 
  3.     if (function_exists('__autoload')) { 
  4.         //Register any existing autoloader function with SPL, so we don't get any clashes 
  5.         spl_autoload_register('__autoload'); 
  6.     } 
  7.     //Register ourselves with SPL 
  8.     return spl_autoload_register(array('PHPExcel_Autoloader', 'Load')); 
  9.     */  
  10.     $functions = spl_autoload_functions();  
  11.     foreach ( $functions as  $function)  
  12.         spl_autoload_unregister($function);  
  13.     $functions = array_merge(array(array('PHPExcel_Autoloader','Load')),$functions);  
  14.     foreach ( $functions as $function)  
  15.         $x = spl_autoload_register($function);  
  16.     return $x;  
  17. }    //    function Register()  

3.3、在需要使用PHPExcel时使用以下代码
  1. $filePath = '/home/public_html/sqt/protected/data/queueSql/company.xls';  
  2. spl_autoload_unregister(array('YiiBase', 'autoload'));  
  3. $phpExcelPath = Yii::getPathOfAlias('application.extensions.PHPExcel.PHPExcel');  
  4. include($phpExcelPath . DIRECTORY_SEPARATOR . 'IOFactory.php');  
  5. spl_autoload_register(array('YiiBase', 'autoload'));  
  6. $PHPExcel = PHPExcel_IOFactory::load( $filePath);  

3.4、只要设置Yii::$enableIncludePath为false,第三方类库就有了执行自己的autoload方法的机会,并且不需要配置config/main.php,非常方便灵活
  1. Yii::$enableIncludePath = false;    
  2. Yii::import('application.extensions.PHPExcel.PHPExcel', 1);  
-------------------------------------------------------------------------------
导入Excel文件方法
  1. public function actionLoad() {  
  2.     if(isset($_POST['submit'])) {  
  3.         $file = CUploadedFile::getInstanceByName('file');//获取上传的文件实例  
  4.         if($file->getType() == 'application/vnd.ms-excel') {  
  5.             $excelFile = $file->getTempName();//获取文件名  
  6.             //这里就是导入PHPExcel包了,要用的时候就加这么两句,方便吧  
  7.             Yii::$enableIncludePath = false;  
  8.             Yii::import('application.extensions.PHPExcel.PHPExcel', 1);  
  9.             $phpexcel = new PHPExcel;  
  10.             $excelReader = PHPExcel_IOFactory::createReader('Excel5');  
  11.             $phpexcel = $excelReader->load($excelFile)->getSheet(0);//载入文件并获取第一个sheet  
  12.    
  13.             $total_line = $phpexcel->getHighestRow();  
  14.             $total_column = $phpexcel->getHighestColumn();  
  15.    
  16.             for ($row = 2; $row <= $total_line; $row++) {  
  17.                 $data = array();  
  18.                 for ($column = 'A'; $column <= $total_column; $column++) {  
  19.                     $data[] = trim($phpexcel->getCell($column.$row) -> getValue());  
  20.                 }  
  21.             }  
  22.         }  
  23.     }  
  24. }  


版权声明:本文为博主原创文章,未经博主允许不得转载。

原文地址:https://www.cnblogs.com/yzycoder/p/4741156.html