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])
}
假如 你数组的key就是数据库的字段:$array = [
“name”=>"舒欣",
"age" =>15
]
然后实例化数据库:
$model = new model()
$result = $model-save($array)
if(!$result){
echo "插入失败"
}
准备工具/材料:装有windows 10的电脑一台,excel软件。
批量导入文件名到excel里的办法如下:
1、在所有文件所在的文件夹中,右键单击并选择新命令,创建一个名为图片的新文本文件。
2、双击打开文本文件,然后输入目录>tp.txt,保存并关闭文件。
3、右键单击图片文件,从下拉菜单中选择重命名,将文件扩展名修改为bat。
4、双击运行画面.bat,然后您会看到一个名为tp的文本文件已经在同一个文件夹下创建。
5、双击打开tp文本文件,复制内容并打开excel文档。
6、在excel中单击鼠标右键,然后从下拉菜单中选择粘贴选项,将内容粘贴到excel中。
7、如果数据在一列中,则执行数据分解命令,并根据提示分解内容,以便文件名和其他信息将在单独的列中。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)