写一个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;
    }


 
原文地址:https://www.cnblogs.com/yanyanyanyanliu/p/11089613.html