純前端解析excel文件

    項目需要,前端解析簡單的excel文件,查找了網上的文章資料,加上按實際需要修改,寫出來供大家參考。

    項目是vue的,先安裝xlsx,這個不用多說,npm install xlsx就完事了。

    然後需要在組件中引入一下。

<input @change="getUploadFile" type="file">

    我項目中的這個導入用的是原生input輸入框。簡潔明瞭。如果覺得樣式醜,可以搞個div用定位寫在同樣的位置,把input設個透明就好了。jquery的更簡單,trigger簡直不要太好用。

    下面是重點,拿到導入的文件,然後解析。爲了讓大家看的清楚,我把他們都寫在input的change事件中了。

    

            getUploadFile (e) {
                //拿到所導入文件的名字
                let fileName = e.target.files[0]
                //定義reader,存放文件讀取方法
                let reader = new FileReader()
                //啓動函數
                reader.readAsBinaryString(fileName)
                //onload在文件被讀取時自動觸發
                reader.onload = function(e) {
                    //workbook存放excel的所有基本信息
                    let workbook = XLSX.read(e.target.result, {type: 'binary'})
                    //定義sheetList中存放excel表格的sheet表,就是最下方的tab
                    let sheetList = workbook.SheetNames
                    //存放json數組格式的表格數據
                    let resultJson = []
                    //存放字符串數組格式的表格數據
                    let resultFormulae = []
                    sheetList.forEach(function(y) {
                        let worksheet = workbook.Sheets[y]
                        let json = XLSX.utils.sheet_to_json(workbook.Sheets[y])
                        let formulae = XLSX.utils.sheet_to_formulae(workbook.Sheets[y])
                        if(json.length > 0){
                            //具體如何處理看項目需求,我的項目其實只有一個sheet,在這裏寫成循環避免大家誤會
                            //數據處理與存放
                            resultJson.push(json)
                            resultFormulae.push(formulae)
                        }

                    });
                    //因爲我的表格只有一列,因此我取出resultJson第一組數據的key作爲鍵去遍歷取出手機號碼
                    let tableHeader = Object.keys(result[0])[0]
                    let importInfo = result.map((item) => {
                        return item[tableHeader]
                    })

                };
            }

    貼出幾個關鍵數據:

從上到下依次爲:

    console.log(resultJson)

    console.log(resultFormulae)

    console.log(tableHeader)

    console.log(importInfo)

    無論小夥伴們用的是什麼庫和框架,所依賴的js庫都是xlsx.js,有的需要直接引入js,有的需要需要像我這樣安裝依賴包,所以我這裏主要展示的是xlsx這個庫的使用方法,至於如何引入因項目而宜了。

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