基于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提取数据库内容中的图片地址并循环输出
Mar 21 PHP
PHP及Zend Engine的线程安全模型分析
Nov 10 PHP
ThinkPHP自动转义存储富文本编辑器内容导致读取出错的解决方法
Aug 08 PHP
php中随机函数mt_rand()与rand()性能对比分析
Dec 01 PHP
php实现专业获取网站SEO信息类实例
Apr 02 PHP
再Docker中架设完整的WordPress站点全攻略
Jul 29 PHP
PHP递归遍历多维数组实现无限分类的方法
May 06 PHP
总结PHP中数值计算的注意事项
Aug 14 PHP
php实现的mongoDB单例模式操作类
Jan 20 PHP
Thinkphp5框架使用validate实现验证功能的方法
Aug 27 PHP
Laravel 将数据表的数据导出,并生成seeds种子文件的方法
Oct 09 PHP
解决PHP Opcache 缓存刷新、代码重载出现无法更新代码的问题
Aug 24 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基于mcrypt_encrypt和mcrypt_decrypt实现字符串加密解密的方法
2016/07/12 PHP
用jQuery简化JavaScript开发分析
2009/02/19 Javascript
Javascript中的相等与不等运算
2010/04/25 Javascript
使用Java实现简单的server/client回显功能的方法介绍
2013/05/03 Javascript
js获得指定控件输入光标的坐标兼容IE,Chrome,火狐等多种主流浏览器
2013/05/21 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
jquery+php实现搜索框自动提示
2014/11/28 Javascript
Nodejs学习笔记之入门篇
2015/04/16 NodeJs
JavaScript中使用Math.floor()方法对数字取整
2015/06/15 Javascript
JavaScript基础知识点归纳(推荐)
2016/07/09 Javascript
javascript实现图片左右滚动效果【可自动滚动,有左右按钮】
2016/09/19 Javascript
js对字符串进行编码的方法总结(推荐)
2016/11/10 Javascript
微信小程序 本地数据读取实例
2017/04/27 Javascript
JS库之Particles.js中文开发手册及参数详解
2017/09/13 Javascript
详解如何在Vue里建立长按指令
2018/08/20 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
推荐一个基于Node.js的表单验证库
2019/02/15 Javascript
js布局实现单选按钮控件
2020/01/17 Javascript
js实现简单扫雷
2020/11/27 Javascript
python显示天气预报
2014/03/02 Python
python计算N天之后日期的方法
2015/03/31 Python
Python 保存矩阵为Excel的实现方法
2019/01/28 Python
深入了解和应用Python 装饰器 @decorator
2019/04/02 Python
python3实现弹弹球小游戏
2019/11/25 Python
使用Python爬虫库BeautifulSoup遍历文档树并对标签进行操作详解
2020/01/25 Python
Tensorflow tf.nn.atrous_conv2d如何实现空洞卷积的
2020/04/20 Python
新手常见Python错误及异常解决处理方案
2020/06/18 Python
CSS3中的opacity属性使用教程
2015/08/19 HTML / CSS
商场促销活动方案
2014/02/08 职场文书
幼师求职自荐信
2014/05/31 职场文书
房屋租赁协议书
2014/10/18 职场文书
2015年企业新年寄语
2014/12/08 职场文书
研究生个人学年总结
2015/02/14 职场文书
检讨书怎么写?
2019/06/21 职场文书
如何将JavaScript将数组转为树形结构
2021/06/02 Javascript