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;
        }
    
    
    
     
  • 相关阅读:
    推荐一款适合Dynamics 365/Dynamics CRM 2016 使用的弹出窗插件AlertJs
    SSRS 报表开发过程中,除数为0的处理
    [Dynamics 365] 关于Currency的一点随笔
    [Microsoft Dynamics CRM 2016]Invalid Action – The selected action was not valid 错误的诱因及解决方法
    [Dynamics CRM 2016]如何配置多语言显示
    获取经过跳转后的url地址
    Microsoft Dynamics CRM 2013 --针对特定实体,取消保存功能(包含自动保存)
    Microsoft Dynamics CRM 2013 --选项集的多选
    我自己也是找了好久这样的远程打印软件
    QTextStream 读取文件乱码的解决办法
  • 原文地址:https://www.cnblogs.com/yanyanyanyanliu/p/11089613.html
Copyright © 2011-2022 走看看