在项目中用到了使用jQuery读取Excel表格内容并存储到数据库内,于是乎上网找了找诸位大牛写的解决方案,发现都不是特别符合我的需求,顺着诸位大牛的思路自己屡了屡思路,实现了符合自己的需求的代码,话不多说,上代码先。
//定义一个上传文件空间 id就叫excel-file,通过onchange事件触发读取Excel表数据
<input type="file" id="excel-file" onchange="Saveexcel(this)" name="excel-file" />
//JQuery代码
//读取excel表中数据
//
var wb;//读取完成的数据
var rABS = false; //是否将文件读取为二进制字符串
function Saveexcel(obj) {
if (!obj.files) {
return;
}
//取得文件后缀名进行判断
var location = $("input[name='excel-file']").val();
var point = location.lastIndexOf(".");
var type = location.substr(point);
if (type != ".xlsx") {
$.messager.alert('提示', '文档格式不正确,请上传后缀名是.xlsx的文件!', 'info');
$('#excel-file').val("");
return;
}
//文件后缀名条件符合
else {
var f = obj.files[0];
var reader = new FileReader();
reader.onload = function (e) {
var data = e.target.result;
var files = e.target;
if (rABS) {
wb = XLSX.read(btoa(fixdata(data)), {
type: 'base64'
}),
persons = [];
} else {
wb = XLSX.read(data, {
type: 'binary'
}),
persons = [];//存储取得的数据
}
//wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
//wb.Sheets[Sheet名]获取第一个Sheet的数据
var JsonHtml = JSON.stringify(XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]));
var fromTo = ''; // 遍历每张表读取
for (var sheet in wb.Sheets) {
if (wb.Sheets.hasOwnProperty(sheet)) {
fromTo = wb.Sheets[sheet]['!ref'];
persons = persons.concat(XLSX.utils.sheet_to_json(wb.Sheets[sheet]));
}
};
//var dataID = ['deviceName', 'Type', 'FlowNumber', 'SerialNumber', 'Model', 'Computerroom', 'Company', 'Department', 'Supplier', 'PurchaseTime', 'PurchaseMoney', 'GuaranteeTime', 'CPU', 'Graphicscard', 'Memorybar', 'Amainboard', 'Soundcard', 'Remarks'];//input ID
if (rABS) {
reader.readAsArrayBuffer(f);
} else {
reader.readAsBinaryString(f);
}
}
};
//Excel数据存储在persons数组中
使用这个方法需要引用这个JS文件 <script src="https://cdn.bootcss.com/xlsx/0.11.5/xlsx.core.min.js"></script> 直接copy到项目中就可以了。