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(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。