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 无刷新导入数据的更多相关文章
- AjaxPro实现无刷新更新数据
使用AjaxPro实现无刷新更新数据 需求 在一个页面动态无刷新的更新后台得到的数据.要想无刷新的更新数据,需要使用Javascript能够获取后台返回的数据,然后通过第三方Javascript库(J ...
- thinkphp下实现ajax无刷新分页
1.前言 作为一名php程序员,我们开发网站主要就是为了客户从客户端进行体验,在这里,thinkphp框架自带的分页类是每次翻页都要刷新一下整个页面,这种翻页的用户体验显然是不太理想的,我们希望每次翻 ...
- 使用AjaxPro实现无刷新更新数据
需求 在一个页面动态无刷新的更新后台得到的数据.要想无刷新的更新数据,需要使用Javascript能够获取后台返回的数据,然后通过第三方Javascript库(JQuery等)动态更新web页面DOM ...
- [转]jquery 点击表格变为input可以修改无刷新更新数据
原文地址:http://www.freejs.net/article_biaodan_43.html 之前已经发了2篇类似的文章<点击变td为input更新>和<jquery表格可编 ...
- Ajax技术(WEB无刷新提交数据)
(转自:http://www.jb51.net/article/291.htm) Ajax内部交流文档一.使用Ajax的主要原因 1.通过适当的Ajax应用达到更好的用户体验: 2.把以前的一些服务器 ...
- MVC ajaxfileupload 实现无刷新导入或上传功能
直接上代码吧 前台 先引用 ajaxfileupload.js <script src="~/Scripts/ajaxfileupload.js"></scrip ...
- Ajax:后台jquery实现ajax无刷新删除数据及demo
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA8gAAAFSCAIAAAChUmFZAAAgAElEQVR4nO29z4scWZbn2/+Hb30zi8
- ThinkPhp 3.2 ajax无刷新分页(未完全改完,临时凑合着用)
临时更改后的page类(很多地方没修改...因为笔者PHP没学好..)如下: <?phpnamespace Fenye\libs; /** file: page.class.php 完美分 ...
- jq实现点击表格无刷新修改数据,优化版
<!-------------------修改密码-------------------------- > $("#pwd").live("click&quo ...
随机推荐
- javascript 的对象
所有事物都是对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 布尔型可以是一个对象. 数字型可以是一个对象. 字符 ...
- UVA 806 Spatial Structures
题意: 如果某一大区域所有色块颜色是相同的,那么这一个大区域就算作一块,如果不同,则将其划分成四个小区域,然后重复上述步骤递归进行直到所有区域的颜色相同为止.然后根据上面划分的区域建树,小区域作为大区 ...
- ASP.NET怎么防止多次点击提交按钮重复提交
今天做一个系统,由于服务器有点慢,所以常会被点击两次或三次,提交的数据就是多次了.所以要让按钮点击后,不能再次点击. 对于一个按钮,要让变成恢色的,只要this.disabled=true就可以了,可 ...
- 安卓开发之APK安装之后自动在桌面上创建快捷图标
可以看到很多的APP在第一次运行之后就会弹出来一个Toast说什么快捷方式已创建,那么这个东西是怎么搞出来的呢 很简单就下面几句话,写在这儿以后好copy 先创建一个类 import android. ...
- About
about: Thanks to NetEase company, the people contribute to NetEase online course, Stephen Prata(< ...
- c++数组操作
一.数组定义和初始化 : 一维数组初始化: : 标准方式一: ]; // value[i]的值不定,没有初始化 : 标准方式二: ] = {,}; // value[0]和value[1]的值分别为1 ...
- 检索n以内所有素数
#include <iostream>#include <cmath> const int N=500000;//数组大小 using namespace std; int m ...
- Hibernate学习之注解学习
转自:http://blog.sina.com.cn/s/blog_935ebb670101dnre.html 1.类级别注解 @Entity 映射实体类 @Table 映射数句库表 @En ...
- VS2008 自定义向导的default.js设置(DLL文件)
function OnFinish(selProj, selObj) { try { var strProjectPath = wizard.FindSymbol('PROJECT_PATH'); v ...
- Flink Program Guide (5) -- 预定义的Timestamp Extractor / Watermark Emitter (DataStream API编程指导 -- For Java)
本文翻译自Pre-defined Timestamp Extractors / Watermark Emitter ------------------------------------------ ...