天天看點

js實作前端導入excel後用純js完成轉換數組(公司架構,自行變通)

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模闆

js實作前端導入excel後用純js完成轉換數組(公司架構,自行變通)

然後後端接收進行存儲或者其他操作

需使用到jacob-1.14.3.jar

下載下傳位址(免費)https://download.csdn.net/download/weixin_43739125/12593872

繼續閱讀