首页 > 开发 > PHP > 正文

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

2024-05-04 23:39:06
字体:
来源:转载
供稿:网友

这篇文章主要介绍了基于ThinkPHP+uploadify+upload+PHPExcel 无刷新导入数据的相关资料,需要的朋友可以参考下

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

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

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

 

 
  1. <load file="__PUBLIC__/js/jquery-1.11.3.min.js" /> 
  2. <load file="__PUBLIC__/uploadify/jquery.uploadify.min.js" /> 
  3. <load file="__PUBLIC__/uploadify/uploadify.css" /> 
  4. <input type="file" class="" id="student" name="student"

2.uploadify使用操作

 

 
  1. <script> 
  2. $(function(){ 
  3. //ThinkPHP上传地址 
  4. var upload = "{:U(MODULE_NAME.'/Student/upload')}"
  5. //ThinkPHP sessionID的提交变量 
  6. //'VAR_SESSION_ID'=>'session_id',在ThinkPHP/Conf/convention.php中进行配置,默认关闭的需要开启 
  7. var sid = '{:session_id()}'
  8. //导入数据地址 
  9. var daoruUrl = "{:U(MODULE_NAME.'/Student/daoruHandle')}" 
  10. //Amaze ui 模态框 
  11. var modal = $('#my-modal-loading'); 
  12. //uploadify使用方法 
  13. $('#student').uploadify({ 
  14. 'swf' : '__PUBLIC__/uploadify/uploadify.swf'
  15. 'uploader' : upload, 
  16. 'buttonText' : '选择文件...'
  17. 'width':120, 
  18. 'height':30, 
  19. 'formData':{'session_id':sid}, 
  20. 'fileTypeExts':'*.xls'
  21. //开始上传弹出模态框 
  22. 'onUploadStart' : function(file) { 
  23. $('#alert-content').html('正在上传文件'); 
  24. modal.modal(); 
  25. }, 
  26. //上传成功关闭模态框,并用后台函数导入数据 
  27. 'onUploadSuccess':function(file, data, response){ 
  28. $('#alert-content').html('正在导入数据'); 
  29. data = eval("("+data+")"); 
  30. $.ajax({ 
  31. type: 'POST'
  32. url: daoruUrl, 
  33. data: {'file':data.file}, 
  34. success: function(retdata){ 
  35. modal.modal('close'); 
  36. if(retdata==1){ 
  37. alert('导入成功'); 
  38. }else
  39. alert('导入失败'); 
  40. }, 
  41. dataType: 'json' 
  42. }); 
  43. }); 
  44. }); 
  45. </script> 

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

 

 
  1. function upload(){ 
  2. $config = array( 
  3. 'maxSize' => 3145728, 
  4. 'rootPath' => './Uploads/'
  5. 'savePath' => ''
  6. 'saveName' => array('uniqid',''), 
  7. 'exts' => array('xls'), 
  8. 'autoSub' => true
  9. 'subName' => array('date','Ymd'), 
  10. ); 
  11. $upload = new Upload($config); 
  12. // 上传文件  
  13. $info = $upload->upload(); 
  14. if(!$info) {// 上传错误提示错误信息 
  15. $this->error($upload->getError()); 
  16. }else{// 上传成功 获取上传文件信息 
  17. $file = $info['Filedata']['savepath'].$info['Filedata']['savename']; 
  18. //p($info); 
  19. $data = array( 
  20. 'file'=>'./Uploads/'.$file, 
  21. ); 
  22. echo json_encode($data); 

4.导入数据进去mysql

 

 
  1. //导入数据处理 
  2. function daoruHandle(){ 
  3. $file = I('file'); 
  4. $excelData = excel_to_mysql($file); 
  5. foreach($excelData['data'] as $row){ 
  6. $data = array( 
  7. 'xuehao'=>$row['xuehao'], 
  8. 'xingming'=>$row['xingming'], 
  9. 'xingbie'=>($row['xingbie']=='男')?1:0, 
  10. 'mima'=>md5($row['mima']), 
  11. ); 
  12. M('student')->add($data); 
  13. echo 1; 

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

 

 
  1. function excel_to_mysql($file){ 
  2. //导入PHPExcel第三方类库 
  3. //vendor('PHPExcel.PHPExcel'); 
  4. import('Classes.PHPExcel',COMMON_PATH,'.php'); 
  5. //实例化PHPExcel类,用于接收Excel文件 
  6. $PHPExcel = new PHPExcel(); 
  7. //读取Excel文件类实例化 
  8. $PHPReader = new PHPExcel_reader_Excel5(); 
  9. //检测Excel版本是否可读 
  10. if(!$PHPReader->canRead($file)){ 
  11. $PHPReader = new PHPExcel_Reader_Excel2007(); 
  12. if(!$PHPReader->canRead($file)) return array('error'=>1);//未知版本的Excel 
  13. //读取Excel文件 
  14. $PHPExcel = $PHPReader->load($file); 
  15. //获得Excel中表的数量 
  16. $sheetCount = $PHPExcel->getSheetCount(); 
  17. //获得第一张工作表 
  18. $sheet=$PHPExcel->getSheet(0); 
  19. //获得表中最大数据列名 
  20. $column = $sheet->getHighestColumn(); 
  21. //获得表中最大数据行名 
  22. $row = $sheet->getHighestRow(); 
  23. //循环获得表中数据 
  24. for($i=1;$i<=$row;$i++){ 
  25. $data[] = array( 
  26. //通过工作表对象的getCell方法获得单元格 getValue方法获得该单元格数值 
  27. 'xuehao'=>$sheet->getCell('A'.$i)->getValue(), 
  28. 'xingming'=>$sheet->getCell('B'.$i)->getValue(), 
  29. 'xingbie'=>$sheet->getCell('C'.$i)->getValue(), 
  30. 'mima'=>$sheet->getCell('D'.$i)->getValue(), 
  31. ); 
  32. //释放工作表对象 
  33. unset($sheet); 
  34. //释放读取Excel文件对象 
  35. unset($PHPReader); 
  36. //释放Excel文件对象 
  37. unset($PHPExcel); 
  38. //返回数据 
  39. return array('error'=>0,'data'=>$data); 

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表