Maison  >  Article  >  développement back-end  >  Comment utiliser ThinkPHP, uploadify, upload, PHPExcel pour importer des données sans actualiser

Comment utiliser ThinkPHP, uploadify, upload, PHPExcel pour importer des données sans actualiser

一个新手
一个新手original
2017-09-12 10:21:041404parcourir

Front-end HTML+JQuery Remarque Jquery nécessite la version 1.x, la version 2.x ne peut pas être utilisée

1 Introduisez les fichiers nécessaires et téléchargez les entrées


.
  <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. Opération d'utilisation de téléchargement


 <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. Opération de téléchargement du contrôleur ThinkPHP : notez que Le téléchargement doit être introduit dans l'espace .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 Importer les données dans 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.PHPExcel Lire la fonction de données de retour de fichier Excel


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);
    }

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn