前端js導(dǎo)入Excel,獲取json數(shù)據(jù)(親測有效)

痛點(diǎn):在錄入數(shù)據(jù)時(shí),靠人工將excel表格的內(nèi)容復(fù)制到網(wǎng)頁上,耗費(fèi)人力及時(shí)間成本,且長時(shí)間操作后,準(zhǔn)確率得不到保障。
需求:在網(wǎng)頁將Excel導(dǎo)入后,表格字段自動(dòng)填充到網(wǎng)頁的對應(yīng)位置。

本文將著重介紹Excel文件導(dǎo)入及將導(dǎo)入數(shù)據(jù)轉(zhuǎn)換為json格式。

直接先上效果圖:

Excel.png
excel處理過的json對象.png

該功能使用原生js即可完成,趁著熱乎來記錄一下。需要用到xlsx.full.min.js,下載地址:https://www.cdnpkg.com/xlsx/file/xlsx.full.min.js/?id=78603

1、下載完成后,頁面引用;

<script src="js/xlsx.full.min.js"></script>

2、html代碼

<input type="file" onchange="impexcel(this)" />

3、js核心代碼;

// 導(dǎo)入excel
function impexcel(obj) {

    var wb; // 存放解析后的excel數(shù)據(jù)
    if(!obj.files) {
        return;
    }
    
    var f = obj.files[0];
    var reader = new FileReader();
    reader.onload = function(e) {
        var data = e.target.result;
        //將文件讀取為二進(jìn)制字符串
        wb = XLSX.read(data, {
            type: 'binary'
        });
        
        // wb.SheetNames[0]是獲取第一個(gè)Sheet頁的名字
        console.log('sheet頁名稱:',wb.SheetNames[0]);
        
        // wb.Sheets[Sheet名]:獲取對應(yīng)Sheet頁的數(shù)據(jù)
        var dataArr = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]);
        console.log('當(dāng)前sheet頁數(shù)據(jù):',dataArr);
        
        dataArr.forEach((item,index)=>{
            console.log(`第${index+1}行數(shù)據(jù):`,item)
        })
        
    };
    reader.readAsBinaryString(f);
}

此時(shí),我們已經(jīng)拿到了想要的json數(shù)據(jù)格式,可以對網(wǎng)頁進(jìn)行數(shù)據(jù)渲染。之后的操作各有不同,就不繼續(xù)往下寫了,根據(jù)自己的需求處理即可。

至此,功能實(shí)現(xiàn),特此記錄!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容