/** * 导入Excel功能 */ public function import(){ if (!empty($_FILES)) { $file = request()->file('import'); $info = $file->rule('uniqid')->move(ROOT_PATH . 'public' . DS . 'suffix'); if($info){ $file_name = './public/suffix/'.$info->getFilename(); }else{ // 上传失败获取错误信息 echo $file->getError(); } Vendor('PHPExcel.PHPExcel'); Vendor('PHPExcel.PHPExcel.Worksheet.Drawing'); Vendor('PHPExcel.PHPExcel.Writer.Excel2007'); // 读取Excel文件内容 $PHPReader = new PHPExcel_Reader_Excel2007(); $PHPExcel = $PHPReader->load($file_name); $currentSheet = $PHPExcel->getSheet(0); //读取excel文件中的第一个工作表 $allColumn = $currentSheet->getHighestColumn(); //取得最大的列号 $allRow = $currentSheet->getHighestRow(); //取得一共有多少行 $arr = array(); //声明数组 /**从第二行开始输出,因为excel表中第一行为列名*/ for($currentRow = 2;$currentRow <= $allRow;$currentRow++){ /**从第A列开始输出*/ for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){ //这部分注释不要,取出的数据不便于我们处理 // $val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue();/**ord()将字符转为十进制数*/ // if($val!=''){ // $erp_orders_id[] = $val; // } //数据坐标 $address = $currentColumn . $currentRow; //读取到的数据,保存到数组$data中 $data[$currentRow][$currentColumn] = $currentSheet->getCell($address)->getValue(); /**如果输出汉字有乱码,则需将输出内容用iconv函数进行编码转换,如下将gb2312编码转为utf-8编码输出*/ //echo iconv('utf-8','gb2312', $val)." "; } } foreach ($data as $k => $v) { $where = ['suffix'=>$v['A']]; $num = Db('suffix')->where($where)->value('id'); if(!$num){ $arr['suffix'] = $v['A']; $arr['companyname'] = $v['B']; $num = Db('suffix')->insert(['suffix'=>$arr['suffix'],'companyname'=>$arr['companyname'],'creat_time'=>date('y-m-d h:i:s')]); if($num < 0){ return $this->error('导入数据库失败'); } } } return $this->success('导入成功'); } }
以上是TP5 导入
百度搜索下载PHPExcel类库,放到vendor文件夹里面
/** * 导入Excel功能 */ public function import(){ if (!empty($_FILES)) { $con = array( 'exts' => array('xls','xlsx'), 'rootPath' => './'.C("UPLOADPATH"), 'maxSize' => 3145728, 'savePath' => '', 'subName' => '', 'autoSub' => false ); $upload = new ThinkUpload($con);// 实例化上传类 // 上传文件 $info = $upload->upload(); if (!$info) { $this->error(); } vendor("excel.PHPExcel"); $file_name=C("UPLOADPATH").$info['file']['savename']; // 读取Excel文件内容 $PHPReader = new PHPExcel_Reader_Excel2007(); $PHPExcel = $PHPReader->load($file_name); $currentSheet = $PHPExcel->getSheet(0); //读取excel文件中的第一个工作表 $allColumn = $currentSheet->getHighestColumn(); //取得最大的列号 $allRow = $currentSheet->getHighestRow(); //取得一共有多少行 $arr = array(); //声明数组 $newuser = D("users"); /**从第二行开始输出,因为excel表中第一行为列名*/ for($currentRow = 2;$currentRow <= $allRow;$currentRow++){ /**从第A列开始输出*/ for($currentColumn= 'A';$currentColumn<= $allColumn; $currentColumn++){ //这部分注释不要,取出的数据不便于我们处理 // $val = $currentSheet->getCellByColumnAndRow(ord($currentColumn) - 65,$currentRow)->getValue();/**ord()将字符转为十进制数*/ // if($val!=''){ // $erp_orders_id[] = $val; // } //数据坐标 $address = $currentColumn . $currentRow; //读取到的数据,保存到数组$data中 $data[$currentRow][$currentColumn] = $currentSheet->getCell($address)->getValue(); /**如果输出汉字有乱码,则需将输出内容用iconv函数进行编码转换,如下将gb2312编码转为utf-8编码输出*/ //echo iconv('utf-8','gb2312', $val)." "; } } foreach ($data as $k => $v) { $arr['user_nicename'] = $v['B'];//昵称 $arr['erpid'] = $v['C'];//ERP账号 $arr['company'] = $v['D'];//单位 $arr['caac'] = $v['E'];//证件号 $arr['workage'] = $v['F'];//司龄 $arr['education'] = $v['G'];//学历 $arr['degree'] = $v['H'];//学位 $arr['school'] = $v['I'];//院校 $arr['major'] = $v['J'];//专业 $arr['postname'] = $v['K'];//岗位名称 $arr['certificate'] = $v['L'];//企业资格认证 $arr['social'] = $v['M'];//社会资格认证 $arr['user_login'] = $v['N'];//账号 $arr['user_pass'] = sp_password($v['O']);//密码 $arr['mobile'] = $v['P'];//手机号 //确认是更新还是新增 $where = ['user_login'=>$arr['erpid']]; $return = $newuser->where($where)->getField('id'); // dump($return);exit; if($return>0){ // dump(32132123);exit; $where1 = ['id'=>$return]; $num = $newuser->where($where1)->save($arr); }else{ $num = $newuser->add($arr); } if($num < 0){ return $this->error('导入数据库失败'); } } return $this->success('导入成功'); } }
写的不对 请一定告知我