yii2.0框架实现上传excel文件后导入到数据库的方法示例
本文实例讲述了yii2.0框架实现上传excel文件后导入到数据库的方法。分享给大家供大家参考,具体如下:
Model模型
false,'extensions'=>'xls,xlsx'], ]; } publicfunctionattributeLabels() { return[ 'file'=>'上传文件' ]; } publicfunctionupload() { $file=UploadedFile::getInstance($this,'file'); if($this->rules()){ $tmp_file=$file->baseName.'.'.$file->extension; $path='upload/'.'Files/'; if(is_dir($path)){ $file->saveAs($path.$tmp_file); }else{ mkdir($path,0777,true); } $file->saveAs($path.$tmp_file); returntrue; }else{ return'验证失败'; } } }
Views视图
'upload', 'options'=>['enctype'=>'multipart/form-data'], ]) ?> =$form->field($model,'file')->fileInput(['multiple'=>'multiple'])?>
Controller控制器
request->isPost){ $model->file=UploadedFile::getInstance($model,'file'); //if($model->upload()){ //print<<alert('上传成功') //EOT; //}else{ //print<< alert('上传失败') //EOT; //} if(!$model->upload()){ print<< alert('上传失败') EOT; } } $ok=0; if($model->load(Yii::$app->request->post())){ $file=UploadedFile::getInstance($model,'file'); if($file){ $filename='upload/Files/'.$file->name; $file->saveAs($filename); if(in_array($file->extension,array('xls','xlsx'))){ $fileType=\PHPExcel_IOFactory::identify($filename);//文件名自动判断类型 $excelReader=\PHPExcel_IOFactory::createReader($fileType); $phpexcel=$excelReader->load($filename)->getSheet(0);//载入文件并获取第一个sheet $total_line=$phpexcel->getHighestRow();//总行数 $total_column=$phpexcel->getHighestColumn();//总列数 if(1<$total_line){ for($row=2;$row<=$total_line;$row++){ $data=[]; for($column='A';$column<=$total_column;$column++){ $data[]=trim($phpexcel->getCell($column.$row)); } $info=Yii::$app->db->createCommand() ->insert('{{%shop_info}}',['shop_name'=>$data[0],'shop_type'=>$data[1]]) ->execute(); if($info){ $ok=1; } } } if($ok==1){ echo""; }else{ echo""; } } } }else{ return$this->render('import',['model'=>$model]); } } }
更多关于Yii相关内容感兴趣的读者可查看本站专题:《Yii框架入门及常用技巧总结》、《php优秀开发框架总结》、《smarty模板入门基础教程》、《php面向对象程序设计入门教程》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》
希望本文所述对大家基于Yii框架的PHP程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。