>  기사  >  백엔드 개발  >  ThinkPHP, 업로드, 업로드, PHPExcel을 사용하여 새로 고치지 않고 데이터를 가져오는 방법

ThinkPHP, 업로드, 업로드, PHPExcel을 사용하여 새로 고치지 않고 데이터를 가져오는 방법

一个新手
一个新手원래의
2017-09-12 10:21:041410검색

프런트 엔드 HTML+JQuery 참고: Jquery에는 버전 1.x가 필요하며 버전 2.x는 사용할 수 없습니다

1.필요한 파일을 도입하고 입력을 업로드하세요


  <load file="__PUBLIC__/js/jquery-1.11.3.min.js" />
  <load file="__PUBLIC__/uploadify/jquery.uploadify.min.js" />
  <load file="__PUBLIC__/uploadify/uploadify.css" />


<input type="file" class="" id="student" name="student">

2.업로드 작업


 <script>
  $(function(){    //ThinkPHP上传地址
    var upload = "{:U(MODULE_NAME.&#39;/Student/upload&#39;)}";    //ThinkPHP sessionID的提交变量
    //&#39;VAR_SESSION_ID&#39;=>&#39;session_id&#39;,在ThinkPHP/Conf/convention.php中进行配置,默认关闭的需要开启
    var sid = &#39;{:session_id()}&#39;;    //导入数据地址
    var daoruUrl = "{:U(MODULE_NAME.&#39;/Student/daoruHandle&#39;)}"    //Amaze ui 模态框
    var modal = $(&#39;#my-modal-loading&#39;);    //uploadify使用方法
    $(&#39;#student&#39;).uploadify({      &#39;swf&#39;      : &#39;__PUBLIC__/uploadify/uploadify.swf&#39;,      &#39;uploader&#39; : upload,      &#39;buttonText&#39; : &#39;选择文件...&#39;,      &#39;width&#39;:120,      &#39;height&#39;:30,      &#39;formData&#39;:{&#39;session_id&#39;:sid},      &#39;fileTypeExts&#39;:&#39;*.xls&#39;,      //开始上传弹出模态框
      &#39;onUploadStart&#39; : function(file) {
        $(&#39;#alert-content&#39;).html(&#39;正在上传文件&#39;);
          modal.modal();
        },      //上传成功关闭模态框,并用后台函数导入数据
      &#39;onUploadSuccess&#39;:function(file, data, response){
        $(&#39;#alert-content&#39;).html(&#39;正在导入数据&#39;);
        data = eval("("+data+")");
        $.ajax({
          type: &#39;POST&#39;,
          url: daoruUrl,
          data: {&#39;file&#39;:data.file},
          success: function(retdata){
            modal.modal(&#39;close&#39;);            if(retdata==1){
              alert(&#39;导入成功&#39;);
            }else{
              alert(&#39;导入失败&#39;);
            }
          },
          dataType: &#39;json&#39;
        });
      }
    });
  });  </script>

3. ThinkPHP 컨트롤러 업로드 작업: Upload.class.php 공간을 도입해야 합니다


    function upload(){        $config = array(            &#39;maxSize&#39;    =>    3145728,
            &#39;rootPath&#39;   =>    &#39;./Uploads/&#39;,
            &#39;savePath&#39;   =>    &#39;&#39;,
            &#39;saveName&#39;   =>    array(&#39;uniqid&#39;,&#39;&#39;),
            &#39;exts&#39;       =>    array(&#39;xls&#39;),
            &#39;autoSub&#39;    =>    true,
            &#39;subName&#39;    =>    array(&#39;date&#39;,&#39;Ymd&#39;),
            );        $upload = new Upload($config);        // 上传文件 
        $info   =   $upload->upload();        if(!$info) {// 上传错误提示错误信息
            $this->error($upload->getError());
        }else{// 上传成功 获取上传文件信息           
            $file = $info[&#39;Filedata&#39;][&#39;savepath&#39;].$info[&#39;Filedata&#39;][&#39;savename&#39;];
        }        //p($info);
        $data = array(            &#39;file&#39;=>&#39;./Uploads/&#39;.$file,
            );        echo json_encode($data);
    }

4. 데이터를 mysql


//导入数据处理
    function daoruHandle(){        $file = I(&#39;file&#39;);        $excelData = excel_to_mysql($file);        foreach($excelData[&#39;data&#39;] as $row){            $data = array(                &#39;xuehao&#39;=>$row[&#39;xuehao&#39;],
                &#39;xingming&#39;=>$row[&#39;xingming&#39;],
                &#39;xingbie&#39;=>($row[&#39;xingbie&#39;]==&#39;男&#39;)?1:0,
                &#39;mima&#39;=>md5($row[&#39;mima&#39;]),
                );
            M(&#39;student&#39;)->add($data);
        }        echo 1;
    }

5으로 가져옵니다. 데이터 함수


function excel_to_mysql($file){        //导入PHPExcel第三方类库
        //vendor(&#39;PHPExcel.PHPExcel&#39;);
        import(&#39;Classes.PHPExcel&#39;,COMMON_PATH,&#39;.php&#39;);        //实例化PHPExcel类,用于接收Excel文件
        $PHPExcel = new PHPExcel();        //读取Excel文件类实例化
        $PHPReader = new PHPExcel_reader_Excel5();        //检测Excel版本是否可读
        if(!$PHPReader->canRead($file)){            
            $PHPReader = new PHPExcel_Reader_Excel2007();            
            if(!$PHPReader->canRead($file)) return array(&#39;error&#39;=>1);//未知版本的Excel        }        //读取Excel文件
        $PHPExcel = $PHPReader->load($file);        //获得Excel中表的数量
        $sheetCount = $PHPExcel->getSheetCount();        //获得第一张工作表
        $sheet=$PHPExcel->getSheet(0);        //获得表中最大数据列名
        $column = $sheet->getHighestColumn();        //获得表中最大数据行名
        $row = $sheet->getHighestRow();        //循环获得表中数据
        for($i=1;$i<=$row;$i++){            
            $data[] = array(                //通过工作表对象的getCell方法获得单元格 getValue方法获得该单元格数值
                &#39;xuehao&#39;=>$sheet->getCell(&#39;A&#39;.$i)->getValue(),              
                &#39;xingming&#39;=>$sheet->getCell(&#39;B&#39;.$i)->getValue(),
                &#39;xingbie&#39;=>$sheet->getCell(&#39;C&#39;.$i)->getValue(),
                &#39;mima&#39;=>$sheet->getCell(&#39;D&#39;.$i)->getValue(),
                        );
        }        //释放工作表对象
        unset($sheet);        //释放读取Excel文件对象
        unset($PHPReader);        //释放Excel文件对象
        unset($PHPExcel);        //返回数据
        return array(&#39;error&#39;=>0,&#39;data&#39;=>$data);
    }

위 내용은 ThinkPHP, 업로드, 업로드, PHPExcel을 사용하여 새로 고치지 않고 데이터를 가져오는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.