美文网首页
tp5 Excel 批量导入 --- 2019-07-17

tp5 Excel 批量导入 --- 2019-07-17

作者: 一位先生_ | 来源:发表于2019-07-17 18:10 被阅读0次

//引入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 批量导入 --- 2019-07-17

      本文链接:https://www.haomeiwen.com/subject/oopclctx.html