网页 中使用js-xlsx进行excel读取,转JSON,判断(vue) js-xlsx的简单使用_js-xlsx sheet_to_json_cxiaobaiy的博客-程序员秘密

技术标签: json  vue.js  javascript  

安装 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。

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

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/python181/article/details/123442318

智能推荐

Linux下批处理文件编写_linux 批处理_Listron的博客-程序员秘密

(1)linux下的批处理文件,基本就是shell脚本文件。1.一个最简单的脚本书写方法为:新建一个文件,名字为clean(自己定义的名字),在里面编写rm -fv *.o;ls -al;(可以写一些shell普通命令,命令用分号隔开) 2.执行方法(1)在控制台输入:   sh clean(2)先给与脚本可执行权限:  chmod 777 clean

蓝桥杯练习8+二维数组的复习_weixin_45941222的博客-程序员秘密

蓝桥杯练习8问题描述如下:小明对数位中含有2,0,1,9的数字很感兴趣(不包括前导0),在1到40中这样的数包括1,2,9,10,至32,39,和40,共28个,他们的和是574。请问,在1到n中,所有这样的数的和是多少思路:这道题与上题的数的分解类似。思路:将int数值类型转换成String类型。用String类的indexOf()方法,判断该数字是否包含“2”,“0”,“1”,“9”这四个字符。代码展示如下:package 第十届蓝桥杯大赛决赛题;import java.util.Sca

取消enter键提交表单_gwpJava的博客-程序员秘密

在HTML页里面由于使用了form,常常需要禁用enter提交表单。因为内容页或者母版页自身有如果有type="submit"的button,当textbox聚焦时,按下enter都会触发表单的默认提交(不论是IE还是firefox),于是需要在onkeydown中监听用户的按键。实际测试,IE8中导致表单提交的不确定因素太多,点击表单的table中的td都会触发表单提交,而firefox则不会;

matlab .opj,HRTF 3D 音效 Matlab实现_任念辰的博客-程序员秘密

尊重原创,请勿转载! 作者:图林根の烤肠,如有纰漏欢迎指出。日期:2015年12月31日2020年6月注:因为年代是在久远,手头目前在忙于Unity和AR项目的事情,待时间赋予会抽空写一篇通过Python实现的内容,还请见谅~讲完了 上一篇,现在可以开始实际演练。具体代码都可以从我的GitHub上面的HRTF文件夹下下载。首先一句话概括3D音频实现的原理:找到对应空间的HRIR数值,然后卷积音频...

linux 批量重启机器脚本,(Linux) 一键批量启动、停止、重启Jar包Shell脚本_Truffer的博客-程序员秘密

废话不多说,直接上脚本,我这里是以spring cloud项目做的示例。#!/bin/shexport EUREKA=family-eureka-1.0.0.jarexport GATEWAY=family-gateway-1.0.0.jarexport AUTH=family-auth-1.0.0.jarexport SYSTEM=family-system-1.0.0.jarexport FI...

随便推点

Java Web开发实践 - 设计需求_weixin_34008805的博客-程序员秘密

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

每日算法:利用proxy实现观察者模式(数据劫持)_proxy 数据劫持的实现_梅子丨朱的博客-程序员秘密

知识储备:es6,设计模式。const observerSet = new Set();const proxy = target =&gt; new Proxy(target,{//观察者观察数据变化 set(target, p, value, receiver) { let result = Reflect.set(target, p, value, receiver); observerSet.forEach(fn=&gt;{ fn();//set操作后执行观察

Oracle数据库查看用户锁表和对表解锁的SQL语句_zhixinghe1的博客-程序员秘密

1、系统管理员system用户登录(sys或有管理员权限用户)2、查看被锁表select sess.sid,       sess.serial#,       lo.oracle_username,       lo.os_user_name,       ao.object_name,       lo.locked_mode  from v$locked_object l...

阿里国际站年底询盘分析总结方法及步骤详解_阿里询盘的基本流程是怎样的_MichaelDai_WPSS的博客-程序员秘密

年底了,12月的阿里国际站数据在上周也出来了,所以是时间表演真正的技术了,不对,是时间来对全年询盘进行分析整理及总结了,今天就和大家来一起看下,如何对​​​​​​​阿里国际站全年询盘数据就行分析总结,以及这对我们后面的工作有什么用?

电源芯片的温升计算_ProgressChen的博客-程序员秘密

参考链接:https://zhuanlan.zhihu.com/p/125085425https://techclass.rohm.com.cn/knowledge/si/s-si/04-s-si/7129什么是芯片温度为保险起见,在此明确一下什么是芯片温度。芯片温度是指晶体管芯片本身的温度Tj(结温)。芯片温度Tj是周围(环境)温度Ta与芯片发热量相加后的温度,是考虑额定值和寿命时最重要的因素之一。芯片温度的计算由于近年来的晶体管芯片是由树脂密封的,当然就无法直接测得芯...

SpringBoot配置文件的读取顺序_springboot读取配置文件顺序[email protected]航空母舰的博客-程序员秘密

SpringBoot开发过程中由于其以配置文件的方式配置各种服务,信息源。本文介绍的为 .yml 的文件读取顺序。读取顺序:第一种是在java项目中resources建一个config文件夹,然后把配置文件放到这个文件夹下;第二种是直接把配置文件放到服务器与jar包的同级目录;第三种在classpath下建一个config文件夹,然后把配置文件放进去;第四种是在classpath下直接放配置文件。我们在SpringBoot项目中在resources下建一个 Config 文件夹.

推荐文章

热门文章

相关标签