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");
   }
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

锅巴胸

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值