前端vue+xlsx读取xlsx文件并处理所得数据

话不多说直接上代码

先安装xlsx npm install xlsx -S

<input @change="getUploadFile" type="file" class="inputDevice"/>
getUploadFile(e){
        console.log('数据改变',e);
        let fileName = e.target.files[0]
        let reader = new FileReader();
        reader.readAsBinaryString(fileName)
        //onload在文件被读取时自动触发
        reader.onload = (e)=> {
            let workbook = XLSX.read(e.target.result, {type: 'binary'})
            console.log(workbook);
            let startData = workbook.Sheets
            let sheetList = workbook.SheetNames
            //存放json数组格式的表格数据
            sheetList.forEach(item=> {
                let worksheet = workbook.Sheets[item]
                let json = XLSX.utils.sheet_to_json(workbook.Sheets[item])
                this.resultJson = json
            });
            console.log(this.resultJson);
            var keyMap = {
                "*城市": "city",
                "*媒体": "media_name",
                "*屏幕大小(宽*高)":"wh",
                "*屏幕尺寸":"size",
                "*操作系统":"os",
                "*最佳分辨率": "pixel",
                "*省份": "province",
                "*联网方式": "wifi/4G",
                "*行政区": "district",
                "*设备开机时间": "time",
                "*设备类型": "device_type",
                "*设备编号": "device_sn",
                "*详细地址": "address",
                "*账号": "user_id",
                "*场景": "scene_name"          
            }
            var a =[]
            for (var item of this.resultJson) {
                var b = {};
                for (var key in item) {
                    if (keyMap[key] === 'wh') {
                         b[keyMap[key]] = item[key].split('*')
                         b['width'] =b[keyMap[key]][0]
                         b['height']=b[keyMap[key]][1]
                    }
                    if(keyMap[key] === 'time'){
                      b[keyMap[key]] = item[key].split('-')
                         b['begin_time'] =b[keyMap[key]][0]
                         b['end_time'] = b[keyMap[key]][1]
                    }
                    b[keyMap[key]] = item[key]
                }
                a.push(b)
          }
          api.storage('importData',a)
          console.log(api.storage('importData'),'1111');
          this.import()
        }
      },
      import(){
        console.log('2222');
        console.log(api.storage('importData'),'3333');
        let importData =api.storage('importData')
        api.postJson(this, 'ad/device/import', importData, (res) => {
          if(res.data.data.error_arr.length==0){
            this.getList(this.params)
          }else{
            this.$Message.warning('导入设备失败,请检查表格格式')
          }
        })
      },
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值