天天看点

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

继续阅读