zoukankan      html  css  js  c++  java
  • ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据

    前端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);
        }
  • 相关阅读:
    ASP字符串16进制互转
    LINQ Dictionary加速查询(TryGetValue)
    ASP中将UTF8格式的URL进行解码。函数
    C# 保护进程不被结束(源代码)防任务管理器结束进程
    用WebBrowser做web 打印时的权限不足。。。。
    .net 2.0 中 ‘注册为 allowDefinition='MachineToApplication' 的节是错误的’
    sql 2005 中分页
    BitComet web 插件和 flash get web 插件 对脚本的影响
    同时使用 C# and VB.NET 在 .net 2.0 中
    用触发器实现主从表关系(主表更改从表更改 )
  • 原文地址:https://www.cnblogs.com/huilange/p/4829197.html
Copyright © 2011-2022 走看看