码迷,mamicode.com
首页 > 其他好文 > 详细

tp5 Excel 批量导入

时间:2018-01-29 15:47:38      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:get   删除   let   文件内容   ack   classes   xlsx   min   factory   

//引入Excel公共类
vendor("PHPExcel.Classes.PHPExcel");
vendor(‘PHPExcel.Classes.PHPExcel.IOFactory.PHPExcel_IOFactory‘);
vendor(‘PHPExcel.Classes.PHPExcel.Reader.Excel5‘);
$objPHPExcel = new \PHPExcel();
$file = request()->file(‘filename‘);
$info = $file->validate([‘ext‘ => ‘xlsx,xls,csv‘])->move(ROOT_PATH . ‘public‘ . DS . ‘uploads/import‘);//上传验证后缀名,以及上传之后移动的地址
if($info){
$exclePath = $info->getSaveName(); //获取文件名
$file_name = ROOT_PATH . ‘public‘ . DS . ‘uploads/import‘ . DS . $exclePath; //上传文件的地址
$objReader =\PHPExcel_IOFactory::createReader(‘Excel5‘);
$obj_PHPExcel =$objReader->load($file_name, $encode = ‘utf-8‘); //加载文件内容,编码utf-8
$excel_array=$obj_PHPExcel->getsheet(0)->toArray(); //转换为数组格式
array_shift($excel_array); //删除第一个数组(标题);
$datas = [];
$data_errors = [];
//处理Excel导入时数据为空的情况
 foreach($excel_array as $k=>$v) {
if(!empty($v[0] || $v[1] || $v[2])){
$excel_list[] = $v;
}
}
$cn=count($excel_list);
//循环遍历,组装数据进行入库
 foreach ($excel_list as $k=>$v){
if(!empty($v[0]) && !empty($v[1])){
$wh[‘job_number‘] = $v[0];
$wh[‘is_deleted‘] = ‘1‘;
$res_info=db(‘member‘)->where($wh)->count();
if($res_info ==0){
$data=array(
‘job_number‘=>$v[0],
‘user_name‘=>$v[1],
‘department‘=>$v[2],
‘create_id‘ =>$admin_id,
‘create_time‘=>date(‘Y-m-d H:i:s‘),
);
$datas[] = $data;
}
}else{
$error_data=array(
‘job_number‘=>$v[0],
‘user_name‘=>$v[1],
‘department‘=>$v[2],
‘create_id‘ =>$admin_id,
‘create_time‘=>date(‘Y-m-d H:i:s‘),
);
$data_errors[] = $error_data;
}

}
$errors_data = count($data_errors);
$repetition = $cn-$errors_data;
$success=db(‘member‘)->insertAll($datas); //批量插入数据
if($success){
$cn_fail=count($data_errors);
$content = "批量新增抽奖参与者名单记录:".json_encode($data);
$this->writelog($admin_id,$content,‘4‘);//4出席成员
$error=$cn-$success;
$error_all = $error-$cn_fail;
$data = array(
‘code‘=>1,
‘message‘=>"{$cn}条,导入成功{$success}条,其中失败{$cn_fail},重复{$error_all}",
‘result‘=>$data_errors,
);
return json($data);
}
return json([‘code‘=>1,‘message‘=>"{$cn}条,导入成功0条,其中重复{$repetition},失败{$errors_data}",‘result‘=>$data_errors]);
}else{
// 上传失败获取错误信息
return json([‘code‘=>2,‘message‘=>导入失败,‘result‘=>null]);
}

tp5 Excel 批量导入

标签:get   删除   let   文件内容   ack   classes   xlsx   min   factory   

原文地址:https://www.cnblogs.com/ws1992/p/8376024.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!