前端導入並解析Excel表格

一、項目需求:

  前端需要用戶導入完EXCEL表格就直接解析相應字段,點擊保存按鈕以後提交給後臺。我們開發的這個項目中用的框架是layui+jquery的。(excel表格如果數據量很大不建議前端做,還是直接後臺解析。這個是性能問題,如果想研究可以自己繼續深入探討一下)

效果展示:

二、JS的引入:

1.xlsx.utils.js

2.xlsx.full.min.js

三、代碼

<!DOCTYPE html>
<html>

<head>
    <meta charset="UTF-8">
    <title></title>
    <script src="./xlsx.full.min.js"></script>
    <script src="./xlsx.utils.js"></script>
</head>

<body>
    <input type="file" id="demo" />
    <div id="loadInfo"></div>
    <script>
        var demo = document.getElementById("demo");
		  //表頭和對應數據庫中維護對象
    var theadLists={
        "Mix&Match":["ID","DV1 Title","DV1","DV2 Title","DV2"]
    }
    var tbodyLists={
        "Mix&Match":["numIid","goodsSnIName","goodsSnI","goodsSnIiName","goodsSnIi"]
    }
       // 自定義頭字典
       const importHeadMap =[]
	   theadLists['Mix&Match'].map(function (item,indexs,arr) {
		   var obj={};
		   tbodyLists['Mix&Match'].map(function (elem,index,array) {
			   obj[arr[index]]={title:array[index]};
			})
		   importHeadMap.push(obj);
		})
		console.log('importHeadMap',importHeadMap)
        demo.onchange = function () {
            let f = this.files[0];
            xlsxUtils.import(f, (w) => {
                //轉換頭
                let oldlist = xlsxUtils.getSheetByIndex(0);
                let newlist = [];
                for (let v of oldlist) {
                    // 過濾空行
                    if (v.ID==undefined)
                        continue
                    // 創建行對象
                    let row = {};
					let importHead = importHeadMap[0];
                    for (let k in importHead) {
                        let attr = importHead[k];
                        if (typeof attr.fn == "function")
                            row[attr.title] = attr.fn(v[k], v);
                        else
                            row[attr.title] = v[k];
                    }
                    newlist.push(row);
                }
				console.log('newlist',newlist)
                loadInfo.innerHTML = "讀取完成";
            });
        };
    </script>
</body>

</html>

由於兩個JS在審覈中,審覈通過直接把地址附上:

https://download.csdn.net/download/lindali1115/12334346

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章