Yii2中使用PHPExcel导入批量用户(读取excel数据)
- 20088
- PHP
- 0
- super_dodo
- 2015/12/31
对于一些后台系统需要对批量数据的excel导入系统,这个时候就需要用到phpexcel。首先下载phpexcel,可以到https://github.com/PHPOffice/PHPExcel上面下载,我下载的是1.8的版本。
下载之后解压提取Classes 下面的内容复制到 /extensions/phpexcel/ 下面。
view部分代码:
<form action="/member/import" method="post" id="post_form" enctype="multipart/form-data"> <table class="post_table" id="post_table"> <tbody> <tr> <td>字段说明</td> <td>用户名不能重复(建议手机号码),用户密码不能少于6位.</td> </tr> <tr> <td>字段说明</td> <td>性别和店铺类型请填写整数(性别 1男 2女 3保密) (店铺类型 1特约 2堆垛 3无).</td> </tr> <tr> <td>选择上传文件</td> <td> <input type="hidden" name="MAX_FILE_SIZE" value="5000000" /> <input name="file" type="file" class="btn btn-warning" /> </td> </tr> </tbody> </table> <input id="addBtn" type="submit" name="submit" class="btn btn-success btn-lg" style="margin:20px 200px;text-align:center;" value="批量导入用户数据"> </form> <?php if(!empty($data)){//对反馈导入数据的成功失败进行展示,提示用户 if($data['error'] == '0'){ $okk = $data['info']['okk']; $err = $data['info']['err']; foreach ($err as $errItem){ echo '<p style="color:#ff5800">'.$errItem.'</p>'; } echo '<hr>'; foreach ($okk as $okkItem){ echo '<p style="color:green">'.$okkItem.'</p>'; } }else{ echo '<h2 style="color:#ff5800">'.$data['msg'].'</h2>'; } } ?>
控制器Controller处理代码如下
// 批量添加用户数据(备注:) public function actionImport() { set_time_limit(0); ini_set('memory_limit','256M'); require '/extensions/phpexcel/PHPExcel.php'; //引入PHPExcel $request = Yii::$app->request; $data = array(); if($_POST){ if($_FILES["file"]["error"] > 0){ $data = array('error'=>'1','msg'=>'文件上传失败,请重新上传..','info'=>''); } $excelFile = ''; //文件名 $filepath = "upload/excel"; $allowtype=array("xls"); $arr=explode(".", $_FILES["file"]["name"]); $hz=strtolower($arr[count($arr)-1]); if(!is_dir($filepath)) { mkdir($filepath, 0777); chmod($filepath, 0777);} $randname = date("Y").date("m").date("d").date("H").date("i").date("s").rand(1000, 9999).".".$hz; if(is_uploaded_file($_FILES["file"]["tmp_name"])){ //将临时位置的文件移动到指定的目录上即可 if(move_uploaded_file($_FILES["file"]["tmp_name"], $filepath.'/'.$randname)){ $excelFile = $filepath.'/'.$randname; //上传成功的节奏 chmod($excelFile, 0777); } } if(!$excelFile){ //文件不存在 $data = array('error'=>'2','msg'=>'文件上传失败,请重新上传,检查文件名..','info'=>''); }else{ //读取Excel $phpexcel = new \PHPExcel; $excelReader = \PHPExcel_IOFactory::createReader('Excel5'); $phpexcel = $excelReader->load($excelFile)->getSheet(0);//载入文件并获取第一个sheet $total_line = $phpexcel->getHighestRow(); //多少行 $total_column = $phpexcel->getHighestColumn(); //多少列 $info = array(); $okk = array(); $err = array(); for($row = 2; $row <= $total_line; $row++) { $oneUser = array(); for($column = 'A'; $column <= 'K'; $column++) { $oneUser[] = trim($phpexcel->getCell($column.$row)->getValue()); } $username = $oneUser[3]; //用户名 $pwd = $oneUser[4]; //密码 $existUser = MemberList::find()->where("username='{$username}'")->exists(); if($existUser){$err[] = $username.'###该用户名已被注册使用,请换一个';break; } $memModel = new MemberList; $memModel->username = $username; $memModel->password = AuthUser::md9Password($pwd); $memModel->vip_id = $oneUser[0]; $memModel->sale_id = $oneUser[1]; $memModel->staff_id = $oneUser[2]; $memModel->nickname = $oneUser[5]; $memModel->tel = $oneUser[6]; $memModel->sex = $oneUser[7]; $memModel->vip_type = $oneUser[8]; $memModel->vip_name = $oneUser[9]; $memModel->address = $oneUser[10]; $memModel->add_user = ''; $memModel->add_time = time(); $memModel->isNewRecord = true; if(!$memModel->save()){ $err[] = $username.'###该用户添加失败,请检查';break; } $okk[] = $username.'###该用户导入成功!!!'; } $info['err'] = $err; $info['okk'] = $okk; $data = array('error'=>'0','msg'=>'成功','info'=>$info); } } return $this->render('import',['data'=>$data]); }
温馨提示:注意form表单的enctype="multipart/form-data"
对于数据量大的情况下。。进行优化和测试。。此处我遇到报错即可break退出。你也可以根据需要continue
对于文件上传,文件格式大小等的判断请根据需要进行控制和限制。
友情链接下一篇 Yii2中使用PHPExcel导出数据到浏览器(导出数据到excel)
2015再见,2016您好!!!
相关阅读
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
热门文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例
最新文章
- 通过Google API客户端访问Google Play帐户报告PHP库
- PHP执行文件的压缩和解压缩方法
- 消息中间件MQ与RabbitMQ面试题
- 如何搭建一个拖垮公司的技术架构?
- Yii2中ElasticSearch的使用示例