/*导入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");
   }
}

thinkphp导入Excel去重相关推荐

  1. ThinkPHP导入Excel文件到数据库的简单实现

    第一步:在官网下载PHPExcel插件下载传送门,放在ThinkPHP/Library/Vendor目录下 第二步:前端简单代码 <!DOCTYPE html> <html> ...

  2. php excel 导入大量,ThinkPHP实现excel的批量导入功能

    2.解压PHPExcel 解压文件 thinkphp中在路径为:ThinkPHP->Library->Vendor中新建文件夹PHPExcel,之后再把红框选中的两个文件,新建的PHPEx ...

  3. thinkPHP的Excel插件

    原文地址 http://www.thinkphp.cn/topic/14005.html 总结的注意事项 1实例化第三方类,要在类名前加\ ,不然引用地址不对. 实现步骤: 一:在http://php ...

  4. php excel导入数据库显示乱码,php修改excel表格数据库数据格式-使用phpexcel导入excel表格数据到MYSQL,乱码怎么解决...

    PHP 用PHPExcel往数据库导入大量数据 估计0是null,所以不显示了,可以换个思路,让他显示为字符串 $number = 0; echo ''.$number 原生PHP代码实现excel导 ...

  5. 解析 EXCEL 去重

    1 解析 EXCEL 去重操作 描述: 最近在对业务进行实现时,遇到一个问题,就是针对于从EXCEL中读取数据后,如何先去除重复数据,然后再进行一系列的操作呢? 思考: 1 当时组长有提供一种思路,先 ...

  6. PHPExcel类导入excel表带图片

    使用PHPExcel类导入excel表格数据,表中带图片导入 public function importPost(){// 上传成功后的excel文件路径$file = $this->requ ...

  7. 如何使用PHPEXCEL导入EXCEL文件

    一.目的 先说为什么要写这篇博客,我的目标是,将一个excel文件导入到一个ThinkPHP的项目的数据库之中.这个看似简单的目标却让我搞了两天两夜,原因主要有两点,一个是自己没有php的基础,也不了 ...

  8. word录入表单数据 java 导入系统,java导入excel | 怎么把excel中的数据批量导入到word中的表格中...

    用javascript怎么实现把excel中的数据批量导入到数据库表中 这个js不能直接实现吧 我们程序用到 先读取excel内容转换成数组 然后放到页面上 再提交表单 储存 MySql如何批量添加数 ...

  9. python绘制动态图表怎么存下来_用python如何实现导入excel数据后自动生成图表?python如何实现交互式动态图表?...

    这个需求涉及的环节太多了.导入excel文件,获取数据 -- 需要xlrd模块把数据导入python 2. 设定输出图表类型 -- 需要matplot模块.根据数据复杂度,可能需要ETL,那么需要pa ...

最新文章

  1. linux 查看san链路状态,Linux下查看网络状态的方法
  2. Activiti工作流实战-2
  3. 甲骨文中国公司如何如何打赢这场裁员翻身仗?
  4. linux vps 运行exe文件夹,linux 64位下安装wine1.6 Windows模拟器(用来运行.exe文件) 编译安装32位wine...
  5. JEECG Framework 3.5.2 (快速开发平台) ACE版本发布
  6. 前端:HTML/05/lt;meta标记,XHTML简介及其编写规范,表格标签(lt;table)及其相关标签(lt;tr,lt;td或lt;th)
  7. python接口自动化(六)--发送get请求接口(详解)
  8. java-工具-轮子
  9. 支付宝——(JAVA)支付测试开发
  10. 计算机应用技术作业答案,计算机应用与技术网上作业题参考答案20121109
  11. 计算机网络网络应用之P2P应用
  12. 如何清除Hacktool.Rootkit病毒,如何让msdirectx.sys此文件彻底删除,谢谢!
  13. UINO优锘:EMV,让IT告警实现至繁归于至简
  14. 调制深度(modulation depth)是什么?
  15. 帝国cms php循环,帝国cms 灵动标签 循环嵌套
  16. LeetCode知识点总结 - 1413
  17. 我来到广东第一“鬼城”,打算买房安家
  18. 《PHASEN:A Phase and Harmonics-Aware Speech Enhancement Network》Pytorch代码学习
  19. linux 计算程序运行时间
  20. 哈马德国际机场在全球最佳机场评选中排名第一;合肥君悦酒店浪漫呈现“悦-七夕”限定晚宴 | 全球旅报...

热门文章

  1. druid产生大量mysql的sleep连接
  2. java 不定参数_java中不定长参数的实例用法
  3. [经验] 新版SkyIAR、Easy Image X在有些PE里不能运行的解决办法
  4. python怎么算数据平均数,python怎样求10个数的平均数
  5. Avada v5.4.4 最新版本破解教程
  6. 计算机网络(十二)IPv6介绍
  7. android6.0重力工具箱,GravityBox[MM]下载-重力工具箱 GravityBox[MM] v6.3.6_手机乐园
  8. 往年计算机一级试题,回顾!往年计算机一级试题及答案解析(3)
  9. 【公共管理硕士论文】共享自行车使用不规范问题治理探析(节选)
  10. tp3.x和tp5.0的区别