多语言展示
当前在线:1831今日阅读:183今日分享:19

Yii框架PHPExcel一键导入方法

以前用过tp框架PHPExcel导入导出,这次改用Yii框架,怕忘记了,记录下过程
工具/原料
1

电脑

2

zendstudio

3

PHPExcel 1.8.0

4

Yii 2.0

方法/步骤
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无效,不过大致步骤相同前台显示代码

        
控制器代码    /*     * 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;    }

注意事项
1

方法中的最下面的exit这句不能省,至今是因为什么不知道

2

只针对.xls的低版本excel有效

推荐信息