js實作前端導入excel後用純js完成轉換數組(公司架構,自行變通)
按鈕的生成
name: 'IMPORTQM02',
text: "導入",
className: "IMPORTQM02",
click: function (e) {
if ($("#inqu_status-0-tqm01Id").val().length<2) {
NotificationUtil("請選擇對應裝備進行導入");
return;
}
var inputObj = document.createElement('input');
inputObj.setAttribute('id', '_ef');
inputObj.setAttribute('type', 'file');
inputObj.setAttribute('style', 'visibility:hidden');
inputObj.setAttribute('onchange', 'aaa(this)');
document.body.appendChild(inputObj);
inputObj.click();
}
js解析excel( console.log(persons);為所有資料,根據自己的架構自行填充組裝)
var aaa = function (e) {
debugger;
var files = e.files;
var fileReader = new FileReader();
fileReader.onload = function (ev) {
try {
var data = ev.target.result,
workbook = XLSX.read(data, {
type: 'binary'
}),
persons = [];
} catch (ev) {
return;
}
var fromTo = '';
for (var sheet in workbook.Sheets) {
if (workbook.Sheets.hasOwnProperty(sheet)) {
fromTo = workbook.Sheets[sheet]['!ref'];
console.log(fromTo);
persons = persons.concat(XLSX.utils.sheet_to_json(workbook.Sheets[sheet]));
}
}
console.log(persons);
var eiInfo = new EiInfo();
var allpid = new EiColumn("allpid"); //列1:結構編碼
var sort = new EiColumn("sort"); //列2:序号
var suppliesMajor = new EiColumn("suppliesMajor"); //列3:專業
var suppliesPlatClass = new EiColumn("suppliesPlatClass"); //列4:試裝平台
var suppliesNo = new EiColumn("suppliesNo"); //列5:器材編碼
var suppliesName = new EiColumn("suppliesName"); //列6:器材名稱
var suppliesModel = new EiColumn("suppliesModel"); //列7:規格型号(器材型号)
var suppliesUnit = new EiColumn("suppliesUnit"); //列8:計量機關
var suppliesNumber = new EiColumn("suppliesNumber"); //列9:裝機數
var fyrPrice = new EiColumn("fyrPrice"); //列10:參考單價
var suppliesPoint = new EiColumn("suppliesPoint"); //列13:重點部位辨別
var remarks = new EiColumn("remarks"); //列14:備注
var qm01Allpid = new EiColumn("qm01Allpid"); //列15:qm01allpid
var pid = new EiColumn("pid"); //列16:qm02pid
var blockMeta = new EiBlockMeta("result");
blockMeta.addMeta(allpid);
blockMeta.addMeta(sort);
blockMeta.addMeta(suppliesMajor);
blockMeta.addMeta(suppliesPlatClass);
blockMeta.addMeta(suppliesNo);
blockMeta.addMeta(suppliesName);
blockMeta.addMeta(suppliesModel);
blockMeta.addMeta(suppliesUnit);
blockMeta.addMeta(suppliesNumber);
blockMeta.addMeta(fyrPrice);
blockMeta.addMeta(suppliesPoint);
blockMeta.addMeta(remarks);
blockMeta.addMeta(qm01Allpid);
blockMeta.addMeta(pid);
var metaBlock = new EiBlock(blockMeta);
for (var j = 0; j < persons.length-1; j++) {
metaBlock.addRow([j]); // 行:第一行 列:第一列 資料:01
metaBlock.setCell(j, "allpid", persons[j].結構編碼);
metaBlock.setCell(j, "sort", persons[j].序号);
metaBlock.setCell(j, "suppliesMajor", persons[j].專業);
metaBlock.setCell(j, "suppliesPlatClass", persons[j].适裝平台);
metaBlock.setCell(j, "suppliesNo", persons[j].器材代碼);
metaBlock.setCell(j, "suppliesName", persons[j].器材名稱);
metaBlock.setCell(j, "suppliesModel", persons[j].适裝平台);
metaBlock.setCell(j, "suppliesUnit", persons[j].計量機關);
metaBlock.setCell(j, "suppliesNumber", persons[j].裝機數);
metaBlock.setCell(j, "fyrPrice", persons[j].參考單價);
metaBlock.setCell(j, "suppliesPoint", persons[j].重點部件辨別);
metaBlock.setCell(j, "qm01Allpid", $("#inqu_status-0-qm01Allpid").val());
if (persons[j].備注) {
metaBlock.setCell(j, "remarks", persons[j].備注);
}else {
metaBlock.setCell(j, "remarks", "無備注");
}
var str = persons[j].結構編碼;
if (str.indexOf(".") == -1 ) {
metaBlock.setCell(j, "pid", null);
}else {
var pid =str.lastIndexOf(".");
metaBlock.setCell(j, "pid", str.substring(0,pid));
}
eiInfo.addBlock(metaBlock);
}
console.log(eiInfo);
EiCommunicator.send("QM02", "insert", eiInfo, {
onSuccess: function (ei) {
IPLAT.alert("導入資料成功!請将價格版次同步更新");
$("#treeList").data(
"kendoTreeList").dataSource.read();
}
})
};
if (files.length != 0) {
fileReader.readAsBinaryString(files[0]);
}
};
Excel模闆
然後後端接收進行存儲或者其他操作
需使用到jacob-1.14.3.jar
下載下傳位址(免費)https://download.csdn.net/download/weixin_43739125/12593872