zoukankan      html  css  js  c++  java
  • 写一个excel导入加过滤

    //首先引入bootstrap 来作为样式
    
    <button class="btn btn-info" type="button" id="import" data-toggle="modal" data-target="#myModal">导入</button>
    
     <div class="modal fade" id="myModal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel">
            <div class="modal-dialog" role="document">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                        <h4 class="modal-title" id="myModalLabel">导入</h4>
                    </div>
                    <div class="modal-body">
                        <div>导入格式如下  <a href="/public/yuangongmoban.xls" download="员工导入模板.xls">下载模板</a> </div>
                        <table class="table table-bordered" id="contents" >
                            <tr>
                                <th>编号</th>
                                <th>姓名</th>
                                <th>手机号</th>
                                <th>员工分组</th>
                                <th>员工级别</th>
                                <th>是否删除</th>
                            </tr>
                            <tr>
                                <td>1</td>
                                <td>小刘</td>
                                <td>18888888888</td>
                                <td>冲锋组</td>
                                <td>组长</td>
                                <td></td>
                            </tr>
                            
                        </table>
                        <div id="rename" style="color: red;">   </div>
                        <div id="unname" style="color: red;">   </div>
                       
                        <form action="#" method="post" id="file-form" enctype="multipart/form-data">
                            <div class="form-group">
                                <label class=" control-label" style="85px;">上传文件<sup>*</sup></label>
                                <div class="">
                                    <input type="file" id="avatarUpload" name="excel" style="display:block;" />
                                </div>
                            </div>
                        </form>
                    </div>
                    <div class="modal-footer">
                        <a  class="btn btn-default" data-dismiss="modal" id="file-import">确定</a>
                        <!--<button type="button" class="btn btn-danger" id="editUser">确定</button>-->
                    </div>
                </div>
            </div>
        </div>
    
    <script>
    var  update_arr = [];
    //导入
        $('#file-import').on('click',function(){
            
            var fileFlag = false;
            fileFlag = $("input[name='excel']").val();
            if(!fileFlag) {
                alert( '请选择文件!');
                return false;
            }
            // 创建
            var form_data = new FormData();
            // 获取文件
            var file_data = $("input[name='excel']").prop("files")[0];
            // 把所以表单信息
            form_data.append("excel", file_data);
            
            $.ajax({
                url:"{:U('Employee/import')}",
                type:'post',
                dataType:'json',
                processData: false, 
                contentType: false,  
                data: form_data,
                success:function(data){
                  console.log(data)
                    if(data.resCode == 1){
                      $("#contents tr:gt(0)").remove();
                      $("#contents tbody").append(data.resData.text);
                      if(data.resData.renum){
                         $("#rename").html('系统删除重复人员:'+data.resData.rename+'共计人数:'+data.resData.renum);
                      }
                     
                      $("#unname").html('系统删除不合格人员:'+data.resData.unname+'共计人数:'+data.resData.unnum+'<button type="button" class="btn btn-danger  addUser" style="margin-left:230px;" id="addUser">确认添加</button>')
                      update_arr = data.resData.data
                    }else{
                      alert(data.msg)
                    }
                },
                error:function(data){
                    console.log(data,111)
                }
            })
            return  false;
        });
    
    //删除
    function getDel(k,key){ 
      delete update_arr[key];
      $(k).parent().remove(); 
    } 
    
    // 最后确定上传
    $("#unname").delegate('.addUser', 'click', function () { 
         $.ajax({
                 url:"{:U('Employee/add_user_all')}",
                 type:'post',
                 dataType:'json',
                 data:{"data":update_arr},
                 success:function(data){
                    if(data.resCode == 1){
                      alert(data.resMsg)
                      window.location.reload()
                    }else{
                       alert(data.resMsg)
                    }
                  },
                 error:function(data){
                     console.log(data,111)
                 }
             })
    
      });
    
    function repeat(a) {
    $('#modal_volume'+a).fadeIn();
    }
    
    function repeat2(a) {
    $('#modal_volume'+a).fadeOut();
    }
    
    $("#avatarUpload").change(function()
    {
          var extArray = ['.xlsx','.xls'];
          var file = event.currentTarget.files[0];
          var url = window.URL.createObjectURL(file);
          var name = file['name'];
          var ext = name.substr(name.lastIndexOf('.'));
          if($.inArray(ext,extArray)<0){
              alert('上传格式错误!目前只支持xlsx ,xls');
              $("#avatarUpload").val("");
              return false;
          }
          
    });
    
    
    </script>
     
    //  tp3  代码
    
    public function add_user_all()
          {
              $add_res = I('post.');
              $userres = $this->getuser_res();
              foreach ($add_res['data'] as $k => $v) {
                  if(!isset($res[$v['mobile']])){ 
                      $data['user_nicename'] =$v['name'];
                      $data['phone']   = $v['mobile'];
                      $data['level']   = $v['targets'];
                      $data['grouping']   = $v['department'];
                      $data['isemployee']   = 1;
                      $data['shopid']   = session('ADMIN_ID');
                      $data['changetime']   = time();
    
                      $add[] = $data;
                  }
              }
               $allID = $this->users_model->addAll($add);
               if($allID){
                    echo  $this->ReturnArray('1','','导入成功!');
               }else{
                    echo  $this->ReturnArray('2','','导入失败!');
               }
          }
    
        /**
         * 导入
         */
        public function import(){
              header("Content-Type:text/html;charset=UTF-8"); 
            $department = $this->department->field('name,id')->where("is_del = 0  and shopid = ". session('ADMIN_ID'))->select();
            foreach ($department as $k => $v) {
                $newdepartment[$v['id']] = $v['name'];
            }
            $departments   =  $this->newtargets;
            
            $name = substr(strrchr($_FILES['excel']['name'], '.'), 1);
            $file = $_FILES['excel']['tmp_name'];
            $data = $this->excel($name,$file);
            if(!$data){
                echo  $this->ReturnArray('2','','文件格式错误!');
            }
            $text = '';
            $res = $this->getuser_res();
    
            foreach($data as $k => &$v){
                $numtarges = (int)$v['targets'];
                $numdepartment = (int)$v['department'];
                
                // $department = 
                $num = $k +1;
                //判断是否重复
                if(!isset($res[$v['mobile']])){    
                    if( preg_match("/^1[345789]d{9}$/", $v['mobile'])){
                        $text .= '<tr>
                                    <td>'.$num.'</td>
                                    <td>'.$v['name'].'</td>
                                    <td>'.$v['mobile'].'</td>
                                    <td>'.$newdepartment[$numtarges].'</td>
                                    <td>'.$departments[$numdepartment].'</td>
                                    <td  onClick="getDel(this,'.$k.')" class="staff_del">删除</td>
                                   </tr>';
                    }else{
                        //不合格数据
                        $unname .= $v['name'].',';
                        $unnum = $unnum+1;
                        unset($data[$k]);
                    }
                }else{
                    //重复数据
                    $rename .= $v['name'].',';
                    $renum = $renum+1;
                    unset($data[$k]);
                }
            }
            
            $return['text'] = $text;
               $return['rename'] = $rename;
               $return['unname'] = $unname;
               $return['renum']  = $renum;
               $return['unnum']  = $unnum;
               $return['data']  = $data;
            if($return){
                    echo  $this->ReturnArray('1',$return,'成功');die;
            }
            echo $this->ReturnArray('3','','文件为空!');
            die;
            // $allID = M('user')->addAll($data);
            // if($allID){
            //     return $this->ajaxReturn(['code'=>1,'msg'=>'导入成功']);
            // }
            // $this->ajaxReturn(['code'=>-2,'msg'=>'导入失败']);
        }
        public function getuser_res()
        {
            $nowuser = $this->users_model->field('phone')->where( "shopid=".session('ADMIN_ID')." and isemployee =1 ")->select();
            $nowuser=  array_map("array_shift",$nowuser);
             return array_flip($nowuser);    //键值对翻转
        }
        /**
         * 读表格信息
         */
        public function excel($name,$files){
            //导入PHPExcel类库,因为PHPExcel没有用命名空间,只能inport导入
            vendor("PHPExcel.PHPExcel");
            //创建PHPExcel对象,注意,不能少了
            $PHPExcel=new PHPExcel();
            if ($name == 'xls') {
                //如果excel文件后缀名为.xls,导入这个类
                vendor("PHPExcel.PHPExcel.Reader.Excel5");
                $PHPReader=new PHPExcel_Reader_Excel5();
            }
            if ($name == 'xlsx') {
                //如果excel文件后缀名为.xlsx,导入这下类
                vendor("PHPExcel.PHPExcel.Reader.Excel2007");
                $PHPReader=new PHPExcel_Reader_Excel2007();
            }
    
            //载入文件
            $PHPExcel=$PHPReader->load($files);
            $currentSheet=$PHPExcel->getSheet(0);
            $allColumn=$currentSheet->getHighestColumn();
            $allRow=$currentSheet->getHighestRow();
            //循环读取数据
            for($currentRow=3;$currentRow<=$allRow;$currentRow++){
                $arr['name'] = $PHPExcel->getActiveSheet()->getCell('A'.$currentRow)->getValue();
                $arr['mobile'] = $PHPExcel->getActiveSheet()->getCell('B'.$currentRow)->getValue();
                $arr['targets'] = $PHPExcel->getActiveSheet()->getCell('C'.$currentRow)->getValue();
                $arr['department'] =$PHPExcel->getActiveSheet()->getCell('D'.$currentRow)->getValue();
                $data[] =$arr;
            }
            return $data;
        }
    
    
    
     
  • 相关阅读:
    vue-fullcalendar插件
    iframe 父框架调用子框架的函数
    关于调试的一点感想
    hdfs 删除和新增节点
    hadoop yarn 实战错误汇总
    Ganglia 安装 No package 'ck' found
    storm on yarn(CDH5) 部署笔记
    spark on yarn 安装笔记
    storm on yarn安装时 提交到yarn失败 failed
    yarn storm spark
  • 原文地址:https://www.cnblogs.com/yanyanyanyanliu/p/11089613.html
Copyright © 2011-2022 走看看