Welcome 微信登录

首页 / 网页编程 / PHP / 基于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); }
通过以上代码实现了ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据,希望对大家有所帮助。