Yii框架PHPExcel一键导入方法
1、网站中商品一多,肯定需要一键导入功能,有现在成的第三方插件类PHPExcel,以下为下载地址,貌似也没有变过http://phpexcel.codeplex.com/
2、里面我们所用到的文件夹主要是Classes这个文件夹
3、把Classes文件夹改名为PHPExcel,复制整个文件夹到你yii项目中的protected/extensions
4、在你定义的方法中需要用到PHPExcel的地方加上这两句代码/*静用Yii自身的自咿蛙匆盗动加载方法,使PHPExcel自带的autoload生效*/ Yii::$enableIncludePath=false; /*引入PHPExcel.php文件*/ Yii::import('application.extensions.PHPExcel.PHPExcel', 1);
5、最后附上我写的代码,此代码主要针对邋冠判厩低版本的excel起效,对excel2007无效,不过大致步骤相同前台显示代码<html><head><meta http-e鳎溻趄酃quiv="Content-Type" content="text/html;charset=utf-8"></head><body><form action="./index.php?r=houtai/functions/daoru" method="POST" enctype="multipart/form-data"> <input type="file" name="filename" /> <input type="submit" name="submit" value="sub" /></form></body></html>控制器代码 /* * Excel一键导入功能 */ function actionDaoru(){ /*是否表单提交*/ if(isset($_POST['submit'])){ /*上传excel文件是否成功*/ $this->upload_file('filename'); /*文件路径及名称*/ $file=Yii::app()->BasePath."/modules/houtai/data/excels/".$_FILES['filename']['name']; $this->excelToArray($file); } $this->renderPartial('Daoru'); }/* * 表数据转化为数组 excel 低版本excel,不包括excel2007 */ function ExcelToArray($file){ /*静用Yii自身的自动加载方法,使PHPExcel自带的autoload生效*/ Yii::$enableIncludePath=false; /*引入PHPExcel.php文件*/ Yii::import('application.extensions.PHPExcel.PHPExcel', 1); //echo $file; /*创建对象,针对Excel2003*/ $objReader=PHPExcel_IOFactory::createReader('Excel5'); /*此属性不明,貌似设置为flase也可以*/ $objReader->setReadDataOnly(true); /*加载对象路径*/ $objPHPExcel=$objReader->load($file); /*获取工作表*/ $objWorksheet=$objPHPExcel->getActiveSheet(); //获得当前活动的工作表,即打开默认显示的那张表 //$objWorksheet=$objPHPExcel->getSheet(0); //也可以这样获取,读取第一个表,参数0 /*得到总行数*/ $highestRow=$objWorksheet->getHighestRow(); /*得到总列数*/ $highestColumn=$objWorksheet->getHighestColumn(); $highestColumnIndex=PHPExcel_Cell::columnIndexFromString($highestColumn); /*取单元数据进数组*/ $excelData=array(); for($row=2;$row<=$highestRow;++$row){ for($col=0;$col<=$highestColumnIndex;++$col){ $excelData[$row][]=$objWorksheet->getCellByColumnAndRow($col,$row)->getValue(); } } print_r($excelData); exit; }
6、最后显示的页面是这样子的,导入的excel表中的数据以数组形式显示