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


Posted in PHP onSeptember 23, 2015

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

前端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 相关文章推荐
一个php作的文本留言本的例子(一)
Oct 09 PHP
分页详解 从此分页无忧(PHP+mysql)
Nov 23 PHP
php中用数组的方法设置cookies
Apr 21 PHP
PHP读取ACCESS数据到MYSQL的代码
May 11 PHP
php判断手机访问还是电脑访问示例分享
Jan 20 PHP
php冒泡排序、快速排序、快速查找、二维数组去重实例分享
Apr 24 PHP
ThinkPHP应用模式扩展详解
Jul 16 PHP
php将字符串随机分割成不同长度数组的方法
Jun 01 PHP
PHP下使用mysqli的函数连接mysql出现warning: mysqli::real_connect(): (hy000/1040): ...
Feb 14 PHP
PHP中ID设置自增后不连续的原因分析及解决办法
Aug 21 PHP
php封装的单文件(图片)上传类完整实例
Oct 18 PHP
ThinkPHP中create()方法自动验证表单信息
Apr 28 PHP
php设置页面超时时间解决方法
Sep 22 #PHP
利用PHP fsockopen 模拟POST/GET传送数据的方法
Sep 22 #PHP
PHP判断字符串长度的两种方法很实用
Sep 22 #PHP
PHP中file_get_contents函数抓取https地址出错的解决方法(两种方法)
Sep 22 #PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
Sep 22 #PHP
PHP实现搜索相似图片
Sep 22 #PHP
从刷票了解获得客户端IP的方法
Sep 21 #PHP
You might like
超级简单的php+mysql留言本源码
2009/11/11 PHP
php获取网页请求状态程序示例
2014/06/17 PHP
PHP常用函数总结(180多个)
2016/12/25 PHP
PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
2019/09/09 PHP
PHP随机生成中文段落示例【测试网站内容时使用】
2020/04/26 PHP
基于jquery实现后台左侧菜单点击上下滑动显示
2013/04/11 Javascript
JavaScript实现仿网易通行证表单验证
2015/05/25 Javascript
JS实现黑色大气的二级导航菜单效果
2015/09/18 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
2015/11/26 Javascript
JS匿名函数实例分析
2016/11/26 Javascript
BootstrapTable refresh 方法使用实例简单介绍
2017/02/20 Javascript
bootstrap3 dialog 更强大、更灵活的模态框
2017/04/20 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
vue中关闭eslint的方法分析
2018/08/04 Javascript
Node.js如何对SQLite的async/await封装详解
2019/02/14 Javascript
Easyui 关闭jquery-easui tab标签页前触发事件的解决方法
2019/04/28 jQuery
layer 刷新某个页面的实现方法
2019/09/05 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
nodejs中的异步编程知识点详解
2021/01/17 NodeJs
[46:55]Ti4 冒泡赛第二轮 LGD vs C9
2014/07/14 DOTA
关于Python如何避免循环导入问题详解
2017/09/14 Python
python实现视频分帧效果
2019/05/31 Python
详解Python3定时器任务代码
2019/09/23 Python
python录音并调用百度语音识别接口的示例
2020/12/01 Python
各大浏览器 CSS3 和 HTML5 兼容速查表 图文
2010/04/01 HTML / CSS
城野医生官方海外旗舰店:风靡亚洲毛孔收敛水
2018/04/26 全球购物
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
实习鉴定范文
2013/12/19 职场文书
校庆活动方案
2014/03/31 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
商场父亲节活动方案
2014/08/27 职场文书
2015年后备干部工作总结
2015/05/15 职场文书
CSS3通过var()和calc()函数实现动画特效
2021/03/30 HTML / CSS
TV动画「神渣☆爱豆」公开第一弹主视觉图
2022/03/21 日漫
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android
鸿蒙3.0体验感怎么样? 鸿蒙3.0系统评测向
2022/08/14 数码科技