Yii2中使用PHPExcel导入批量用户(读取excel数据)
- 20360
- 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的使用示例

