基于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 无刷新导入数据,希望对大家有所帮助 。 |