网页 中使用js-xlsx进行excel读取,转JSON,判断(vue) js-xlsx的简单使用

安装 js-xlsx npm i js-xlsx 完成后引入

import * as XLSX from 'xlsx';
也可以全局引入,不过我这里不需要

上代码

HTML部分

<template>
  <div style="padding: 20px">
    <div>
      <input type="file" @change="readLocalFile" accept="*.xls" id="files"/>
    </div>
    <h1>合格的</h1>
    <div id="demo"></div>
    <h1>不合格的</h1>
    <div id="demo1"></div>
  </div>
</template>
然后是JS部分

<script>
import * as XLSX from 'xlsx';
export default {
  name: 'systemCallerCenter',
  data(){
    return{
      list:[]
    }
  },
  mounted() {
  },
  methods: {
    readLocalFile(file, callback) {
        var wb;
        var rABS = false;
        var xsl = file.target.files[0]
        var reader = new FileReader();
        reader.readAsArrayBuffer(xsl, { type: 'binary' });
        reader.onload = function(e) {
          console.log(e.target.result,1111111111111111)
          var data = e.target.result;
          if(rABS) {
            wb = XLSX.read(btoa(fixdata(data)), {
              type: 'base64'
            });
          } else {
            wb = XLSX.read(data, {
              type: 'binary'
            });
          }
          console.log(XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]]),'测试表格数据--JOSON')
        }
        var arr = []
        var arr1 = []
      setTimeout(()=>{
        this.list = XLSX.utils.sheet_to_json(wb.Sheets[wb.SheetNames[0]])
        if(this.list.length>0){
          var reg_tel = /^(13[0-9]|14[01456879]|15[0-35-9]|16[2567]|17[0-8]|18[0-9]|19[0-35-9])\d{8}$/
          this.list.forEach(item=>{
            if(reg_tel.test(item['联系电话']) && item['联系电话'] !=''){
              arr.push(item)
            }else{
              arr1.push(item)
            }
          })
        }
          document.getElementById("demo").innerHTML= JSON.stringify(arr );
          document.getElementById("demo1").innerHTML= JSON.stringify(arr1 );
        },2000)
    }

  }
}
</script>
运行结果

 

其实也很简单,首先选择一个excel文件,应为是无法直接拿到文件地址的,所以就直接选择拿取二进制文件流,然后通过转换,利用js-xlsx,即可直接转为需要的东西,所以js-xlsx这个东西还是很好用的。过程中做了一些文件读取后格式的判断不必要但是暂时留着了QAQ。

我是小柏,一个前端菜鸟,希望对读者有帮助

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值