/**
* excel批量导入数据,解析,校验,
*/
var wb;//读取完成的数据
var rABS = false; //是否将文件读取为二进制字符串
//function importExcel(obj) {//导入
$uploadfile = {
//
importExcel:function(objs) {
var obj = objs[0];
if(!obj.files) {
return;
}
const IMPORTFILE_MAXSIZE = 1*1024;//这里可以自定义控制导入文件大小
if(obj.files[0]){//上传文件判空
var suffix = obj.files[0].name.split(".")[1]
if(suffix != 'xls' && suffix !='xlsx'){
alert('导入的文件格式不正确!')
return
}
if(obj.files[0].size/1024 > IMPORTFILE_MAXSIZE){
alert('导入的表格文件不能大于1M')
return
}
}else{
swal("请先选择要导入文件")
}
var f = obj.files[0];
var reader = new FileReader();
reader.onload = function(e) {
var data = e.target.result;
if(rABS) {
wb = XLSX.read(btoa(fixdata(data)), {//手动转化
type: 'base64'
});
} else {
wb = XLSX.read(data, {
type: 'binary'
});
}
//wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
//wb.Sheets[Sheet名]获取第一个Sheet的数据
// document.getElementById("demo").innerHTML= JSON.stringify( XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]) );
//var objList = JSON.stringify(XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]));
//完整数据
var objList = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])
//只包含订单号
var codesList = new Array();
for(var i = 0;i < objList.length;i++){
codesList.push(objList[i]);
}
var failcodes = new Array();
$.ajax({
type : "post",
contentType : 'application/json',
url : context + '/xxx.json',
data : JSON.stringify(codesList),
dataType : 'json',
success : function(data) {
if (data != null && data.state == 200) {
swal({
title : "操作成功!",
type : "success"
});
$("#fileUpload").val("");
$voucherCenter.czQueue(currentIndex);
$('#presellRemarks').fadeOut();
}else{
swal({
title : "操作失败!",
type : "error"
});
}
}
});
};
if(rABS) {
reader.readAsArrayBuffer(f);
} else {
reader.readAsBinaryString(f);
}
},
};
function fixdata(data) { //文件流转BinaryString
var o = "",
l = 0,
w = 10240;
for(; l < data.byteLength / w; ++l) o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w, l * w + w)));
o += String.fromCharCode.apply(null, new Uint8Array(data.slice(l * w)));
return o;
}
html导入js文件:
<script src="../js/xlsx.full.min.js"></script>