js导入xlsx文件

原生js导入xlsx

导入的是excel表格数据如:在这里插入图片描述

1.记得导入xlsx.js文件
可以用csdn链接:

<script src="https://cdn.bootcdn.net/ajax/libs/xlsx/0.17.0/xlsx.js"></script>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        div{
            text-align: center;
            line-height: 40px;
            color: #fff;
            background-color: rgb(63, 192, 243);
            border-radius: 20px;
            width: 80px;
            height: 40px;
            cursor: pointer;
        }
    </style>
    <script src="./xlsx.js"></script>
</head>
<body>
    <input class="input" type="file" style="display: none;" onchange="onchangeFn(this)"></input>
    <div onclick="clickFn()">上传xlsx</div>
    <script>
    
        let inp = document.querySelector('.input')
        function clickFn(){
            document.querySelector('.input').click()
        }
        function onchangeFn(){
            let file = inp.files[0]
            let failName = file.name.substr(file.name.lastIndexOf(".") + 1);
            if (failName === 'xls' || failName === 'xlsx') {
                importf(file, function(data){
                    let res = JSON.parse(data)
                    let result = convertKey(res, {'区域': 'address', '城市': 'city', "店铺编号": 'serial', '激活屏幕数': 'number', '店铺名称': 'name'})
                    console.log(result);
                })
            } else {
                console.log('文件类型错误');
            }
        }
        // 把xlsx表格中的中文名字转换成对应的英文
        function convertKey(arr, keyMap){
            let tempString = JSON.stringify(arr);
            console.log('tempString', tempString);
            for(var key in keyMap){
                var reg = `/"${key}":/g`;
                console.log('reg', reg);
                console.log(eval(reg));
                tempString = tempString.replace(eval(reg), '"' + keyMap[key] + '":');
            }
            return JSON.parse(tempString);
        }
        const importf = (fail, cd) => { // 导入
            var wb;
            var rABS = false; // 是否将文件读取为二进制字符串
            if (!fail) {
                return;
            }
            var f = fail;
            var reader = new FileReader();
            reader.onload = function (e) {
                var data = e.target.result;
                if (rABS) {
                    wb = XLSX.read(btoa(fixdata(data)), {// 手动转化
                        type: 'base64'
                    });
                } else {
                    wb = XLSX.read(data, {
                        type: 'binary'
                    });
                }
                // wb.SheetNames[0]是获取Sheets中第一个Sheet的名字
                // wb.Sheets[Sheet名]获取第一个Sheet的数据
                if (cd) {
                    cd(JSON.stringify(XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])));
                }
            };
            if (rABS) {
                reader.readAsArrayBuffer(f);
            } else {
                reader.readAsBinaryString(f);
            }
        };
    </script>
</body>
</html>
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值