基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据

5年以前  |  阅读数:391 次  |  编程语言:PHP 

废话不多说,直接给大家贴代码了,代码附有注释,相信大家都能看懂的,有不明白的地方欢迎给我留言。

前端HTML+JQuery 备注Jquery需要1.x版本,不能用2.x版本

1.引入必要文件及上传input


     <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.uploadify使用操作


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

3、ThinkPHP控制器上传操作:备注需要引入Upload.class.php空间


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

4.导入数据进去mysql


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

5.PHPExcel读取Excel文件返回数据函数


    function excel_to_mysql($file){
      //导入PHPExcel第三方类库
      //vendor('PHPExcel.PHPExcel');
      import('Classes.PHPExcel',COMMON_PATH,'.php');
      //实例化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('error'=>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方法获得该单元格数值
        'xuehao'=>$sheet->getCell('A'.$i)->getValue(),
        'xingming'=>$sheet->getCell('B'.$i)->getValue(),
        'xingbie'=>$sheet->getCell('C'.$i)->getValue(),
        'mima'=>$sheet->getCell('D'.$i)->getValue(),
       );
      }
      //释放工作表对象
      unset($sheet);
      //释放读取Excel文件对象
      unset($PHPReader);
      //释放Excel文件对象
      unset($PHPExcel);
      //返回数据
      return array('error'=>0,'data'=>$data);
     }

通过以上代码实现了ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据,希望对大家有所帮助。

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例