010-63307995
在线客服
电话联系
微信咨询
建站技术
成立11周年,感恩回馈新老客户钜惠活动进行中……
文章资讯ARTICLE
公司新闻
建站指南
行业新闻
营销分享
网站建设资讯
最新签约

thinkphp导入Excel去重

来源:本站 最后更新:2023-02-13 14:17:07 作者:佚名 浏览:1098次

北京网站建设、北京网站建设公司、北京网站制作公司、北京网站制作、北京做网站、北京做网站公司、高端网站建设

thinkphp导入Excel去重

/*导入Excel有两种可能
  1.导入的Excel本身就有重复项
  2.导入的Excel数据和已有的数据库信息有重复项
  解决思路:
  1.先不管是否有重复项,直接导入到一张临时表,然后经过去重处理插入到一张新表(比较麻烦,数据处理过程多)
  2.先获取Excel的数据,然后循环读取数据,在循环里把每条数据和数据库里的数据进行对比,如果没有就插入,
    如果有就更新这条数据(导入过程中就处理数据,过程简单)
*/

//导入Excel
public function importExecl()
{

   import('ORG.Net.UploadFile');
   $upload=new UploadFile();// 实例化上传类
   $upload->allowExts=array('xls','xlsx');// 设置附件上传类型
   $upload->savePath='./Uploads/';// 设置附件上传目录
   $upload->saveRule=date('Ymdhis');//设置附件上传名称
   if(!$upload->upload()){// 上传错误提示错误信息
      $this->error($upload->getErrorMsg());
   }else{//上传成功 获取上传文件信息
      $info=$upload->getUploadFileInfo();
   }
   $filetmpname='./Uploads/'.$info[0]['savename'];//获取上传的Excel的文件名
   import('ORG.Util.PHPExcel');
   $objPHPExcel = PHPExcel_IOFactory::load($filetmpname);
   $sheetCount = $objPHPExcel->getSheetCount();
   $excelarr=array();
   $excelarr= $objPHPExcel->getSheet(0)->toArray();
   $line_list=M("line_list");
   
   for($i=1;$i<=count($excelarr);$i++) {
      $data['type'] = $excelarr[$i][0];
      $data['account_name'] = $excelarr[$i]1;
      $data['clerk'] = $excelarr[$i][2];
      $data['checkin_time'] = $excelarr[$i][3];
      $data['client_name'] = $excelarr[$i][4];
      $data['project'] = $excelarr[$i][5];
      $data['capacity'] = $excelarr[$i][6];
      $data['line_number'] = $excelarr[$i][7];
      $data['monthly_amount'] = $excelarr[$i][8];
      $data['open_time'] = $excelarr[$i][9];
      $data['billing_time'] = $excelarr[$i][10];
      $data['down_time'] = $excelarr[$i][11];
      $data['invoice'] = $excelarr[$i][12];
      $data['status'] = $excelarr[$i][13];
      $data['remarks'] = $excelarr[$i][14];//上面的$date是读取Excel的每条数据
      $result = $line_list->where ("line_number='{$data['line_number']}'")->field('id,line_number')->find();
      if (empty($result['line_number'])) {
         $rs = $line_list->add ($data);//如果线路编号为空就添加这条数据
      }else{
         $rs=$line_list->where("id='{$result['id']}'")->save($data);//如果已有这条数据就更新这条数据
      }

   }
   if($rs){
      unlink($filetmpname);//这里是删除上传后的文件
      $this->success("上传成功","__URL__/index");
   }else{
      $this->error("上传失败","__URL__/index");
   }
}

注:尊重原创。部分文章和图片来于网络,如未署名,系检索无法确定原作者,版权归原作者。原作者可随时联系我们予以署名更正或做删除处理。
快速搜索
热门标签
推荐阅读
友情链接/ Links