程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 網頁編程 >> PHP編程 >> 關於PHP編程 >> ThinkPHP+uploadify+upload+PHPExcel 無刷新導入數據,thinkphpuploadify

ThinkPHP+uploadify+upload+PHPExcel 無刷新導入數據,thinkphpuploadify

編輯:關於PHP編程

ThinkPHP+uploadify+upload+PHPExcel 無刷新導入數據,thinkphpuploadify


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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved