废话不多说,直接给大家贴代码了,代码附有注释,相信大家都能看懂的,有不明白的地方欢迎给我留言。
前端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 无刷新导入数据,希望对大家有所帮助。
【说明】:本文章由站长整理发布,文章内容不代表本站观点,如文中有侵权行为,请与本站客服联系(QQ:)!