1html部分
上传按钮
<button class="layui-btn layui-btn-sm" lay-submit="" lay-filter="go7" id="go7">上传成绩模板</button>
2js部分
var upload = layui.upload;
//执行实例
var uploadInst = upload.render({
elem: '#go7' //绑定元素
,url: 'uploadExcel.php' //上传接口
,accept: "file"
,exts: 'xls|excel|xlsx'
,done: function(res){
//上传完毕回调
// console.log(res.data[1][2]);
for(i=1;i<res.data.length;i++){
$('input[name="txta'+i+'"]').val(res.data[i][2]==null?'':res.data[i][2]);
$('input[name="txtb'+i+'"]').val(res.data[i][3]==null?'':res.data[i][3]);
$('input[name="txtc'+i+'"]').val(res.data[i][4]==null?'':res.data[i][4]);
$('input[name="txtd'+i+'"]').val(res.data[i][5]==null?'':res.data[i][5]);
$('input[name="txte'+i+'"]').val(res.data[i][6]==null?'':res.data[i][6]);
$('input[name="txtf'+i+'"]').val(res.data[i][7]==null?'':res.data[i][7]);
$('input[name="txtg'+i+'"]').val(res.data[i][8]==null?'':res.data[i][8]);
}
// console.log($('input[name="txta1"]').val());
layer.msg('上传成功,请先计算总评,再保存',{time:6000});
}
,error: function(){
//请求异常回调
layer.msg("模板格式不正确");
}
});
3php部分
uploadExcel.php文件
<?php
addExcel();
//接收前台文件
function addExcel()
{
//接收前台文件
$ex = $_FILES['file'];
//重设置文件名
$filename = time() . substr($ex['name'], stripos($ex['name'], '.'));
$path = 'upload/' . $filename;//设置移动路径
move_uploaded_file($ex['tmp_name'], $path);
//表用函数方法 返回数组
$exfn = _readExcel($path); // 读取内容
upload_file($exfn, $path); // 上传数据
}
//创建一个读取excel数据,可用于入库
function _readExcel($path)
{
//引用PHPexcel 类
include_once('../inc/PHPExcel.php');
include_once('../inc/PHPExcel/IOFactory.php');//静态类
$type = 'Excel2007';//设置为Excel5代表支持2003或以下版本,Excel2007代表2007版
$xlsReader = PHPExcel_IOFactory::createReader($type);
$xlsReader->setReadDataOnly(true);
$xlsReader->setLoadSheetsOnly(true);
$Sheets = $xlsReader->load($path);
//开始读取上传到服务器中的Excel文件,返回一个二维数组
$dataArray = $Sheets->getSheet(0)->toArray();
return $dataArray;
}
//将数据以json格式输出
function upload_file($data, $path)
{
//global $db;
$arr = array();
array_push($arr, $data[0]);
//删除第一项
unset($data[0]);
//$sql = 'insert into media_platform (user,phone,passwd,head,nickname,platform) values (?,?,?,?,?,?)';
//$stmt = $db->prepare($sql);
foreach ($data as $v) {
//$result = $stmt->execute(array($v[0] ? $v[0] : '', $v[1] ? $v[1] : '', $v[2] ? $v[2] : '', $v[3] ? $v[3] : '', $v[4] ? $v[4] : '', $v[6] ? $v[6] : ''));
// $stmts->execute(array($v[6] ? $v[6] : ''));
//if (!$result) {
array_push($arr, $v);
//}
}
// 返回json格式
// {
// "code": 0
// ,"msg": ""
// ,"data": {
// "src": "http://cdn.layui.com/123.jpg"
// }
// }
$result=array("code"=>"0","msg"=>"","data"=>$arr);
echo json_encode($result);
unlink($path); // 上传完文件之后删除文件,避免造成垃圾文件的堆积
}
?>
其中,调用了PHPExcel插件,下载地址:
https://github.com/PHPOffice/PHPExcel
在使用PHPExcel插件是会有一个报错,需要修改 PHPExcel\Reader\Excel2007.php文件,
在首行加入
date_default_timezone_set('PRC');//设置中国时区
参考文章:https://www.ermsg.com/post/10.html
参考文章:https://blog.csdn.net/weixin_43260760/article/details/83021626