upload.render({ elem: '#LAY-excel-upload', //綁定元素 url: MODULE_PATH + '/upload',//上傳接口(PS:這里不用傳遞整個 excel) accept: 'file', auto: false, //選擇文件后不自動上傳 點擊按鈕觸發 data:{"canshu":"參數"},//@RequestParam(value="canshu", required = false)String canshu 后台接收 bindAction: '#uploadAction', //指向一個按鈕觸發上傳 exts: 'xls|xlsx', choose: function (obj) {// 選擇文件回調 var files = obj.pushFile(); <!-- ***************************************************************************** --> //上傳時 文件存進layui的文件上傳隊列,會出現重復校驗第一次上傳文件,設置校驗刪除之前歷史文件 var lastX=0; var fileCount=0; //遍歷,獲取最后一個文件的下標索引 for (var x in files) { //x是文件對象的唯一索引,是個字符串,例如:1612418956647-0 lastX=x; fileCount++; } if(fileCount>1){ //刪除其他文件,保留最后一個文件 for (var x in files) { if(x != lastX){ delete files[x]; } } } <!-- ***************************************************************************** -->
var fileArr = Object.values(files);// 注意這里的數據需要是數組,所以需要轉換一下 uploadExcel(fileArr); //上傳校驗 如果只需要最新選擇的文件,可以這樣寫: uploadExcel([files.pop()]) }, before: function(obj){ layer.load(); }, done: function(res, index, upload){ layer.close(layer.load()); //導入后 回調函數 }, error:function(){ layer.close(layer.load()); } });
function uploadExcel(files) { try { excel.importExcel(files, { // 可以在讀取數據的同時梳理數據 fields: { 'nickname': 'A', 'idNumber': 'B', 'email': 'C', 'phone': 'D' } }, function(data) { var emptyRow=""; fileTag=true; fileIsNull=true; if(data[0].sheet1.length<2) {//length : 0空文件 1只有表頭 layer.msg("上傳文件為空!", {icon: 7}); $('#LAY-excel-upload').val(""); }else{ for (var i=1;i<data[0].sheet1.length;i++) {//從1開始 0為首行 var tag=(data[0].sheet1[i].nickname == "") ? true : false; if(tag == true) { var a=i+1; if(emptyRow == "") { emptyRow = a+""; }else{ emptyRow = emptyRow + "," +a; } continue; } tag=(data[0].sheet1[i].idNumber == "") ? true : false; if(tag == true) { var a=i+1; if(emptyRow == "") { emptyRow = a+""; }else{ emptyRow = emptyRow + "," +a; } continue; } tag=(data[0].sheet1[i].email == "") ? true : false; if(tag == true) { var a=i+1; if(emptyRow == "") { emptyRow = a+""; }else{ emptyRow = emptyRow + "," +a; } continue; } tag=(data[0].sheet1[i].phone == "") ? true : false; if(tag == true) { var a=i+1; if(emptyRow == "") { emptyRow = a+""; }else{ emptyRow = emptyRow + "," +a; } continue; } } if(emptyRow != "") { layer.msg("表格中第"+emptyRow+"行有空數據,請填寫完整后再上傳!", {icon: 7}); $('#LAY-excel-upload').val(""); } } }) } catch (e) { layer.alert(e.message) } }