前端解析Excel中的数据进行操作

news2025/4/4 5:29:32

技术要点:Vue、Element、JSON

功能描述:读取Excel中的数据,利用JavaScript技术奖数据转成Json格式进行操作!

功能描述:只能用前端操作数据,并未实现将数据传送至后端处理!

注意注意注意

如果你的表格中只有一行数据是无法被读取的,这种方法只能读取至少两行的表格!

(1)例如这样的就无法读取。

在这里插入图片描述
(2)这样的就能读取两行。

在这里插入图片描述

(3)只限于前端操作,并未向后端提供excel数据

(一)安装插件:

1、element依赖

(1)安装element依赖

npm i element-ui -S

2、xlsx依赖

(1)安装xlsx依赖

npm install xlsx

(2)文件中引入

import XLSX from "xlsx";

(二)页面开发

1、添加Element组件

      <el-upload
              action="/"
              :on-change="onChange"
              :auto-upload="false"
              :show-file-list="false"
              accept=".xls, .xlsx"
      >
        <el-button size="small" type="primary" class="upload-bom uploadBtn">
          <span class="iconXlSX-sty-test">导入最佳位置点</span>
        </el-button>
      </el-upload>

2、methods方法添加

(1)引入依赖

import XLSX from "xlsx";

在这里插入图片描述

(2)文件选择回调

// 文件选择回调
      onChange(file, fileList) {
          console.log(fileList)
          this.$confirm("此操作将永久覆盖名单, 是否继续?", "提示", {
              confirmButtonText: "确定",
              cancelButtonText: "取消",
          })
              .then(() => {
                  this.fileData = file; // 保存当前选择文件
                  console.log(file)
                  console.log(this.fileData )
                  this.readExcel(); // 调用读取数据的方法
              })
              .catch(() => {
                  this.$message({
                      type: "info",
                      message: "已取消",
                  });
              });
      },

(3)Excel表格数据处理

      // 读取数据
      readExcel(e) {
          console.log(e)
          let that = this;
          const files = that.fileData;
          console.log(files)
          if (!files) {
              // 如果没有文件 - 当然也可以提醒用户弹个警告框 但是基本没有这种情况的出现
              return false;
          } else if (!/\.(xls|xlsx)$/.test(files.name.toLowerCase())) {
              // 文件格式的判断
              this.$message.error("上传格式不正确,请上传xls或者xlsx格式");
              return false;
          }
          const fileReader = new FileReader();
          fileReader.onload = (ev) => {
              try {
                  const data = ev.target.result;
                  const workbook = XLSX.read(data, {
                      type: "binary",
                  });
                  // 取第一张表
                  const wsname = workbook.SheetNames[0];
                  // 生成json表格内容
                  const ws = XLSX.utils.sheet_to_json(workbook.Sheets[wsname]);
                  // 循环 ws 取得其中的数据
                  // 把 ws 打印出来 就可以看得很清楚了 之后就进行自己想要的操作就可以了
                  // 没有一样的代码 没有一样的需求
                  var temporary = [];
                  var temporaryValue = [];
                  // for (let i = 0; i < ws.length; i++) {
                  //     temporary.push([
                  //         ws[i].姓名 + "",
                  //         ws[i].年龄,
                  //     ]);
                  // }
                  //第一种方式
                  console.log("JSON数据转换")
                  console.log(ws[0])
                  console.log(ws[1])
                  console.log("JSON数据转换")
                  
                  //对Json数据进行处理
                  for( var attr in ws[1] ){
                      console.log( attr + ' : ' + ws[1][attr] );  
                      // 注意这里访问不能用.访问,也不能加引号,否则就代表访问的是json里面名称为attr的值了
                      temporary.push(parseInt(attr))
                      temporaryValue.push(ws[1][attr])
                  }
                  this.init(temporaryValue);
                  this.DistributorList = temporary;
              } catch (e) {
                  return false;
              }
          };
          // 如果为原生 input 则应是 files[0]
          fileReader.readAsBinaryString(files.raw);
      },

(4)注意点

注意在这里如果你的表格中只有一行数据是无法被读取的,这种方法只能读取至少两行的表格!

3、JSON字符串处理方式

(1)JSON字符串:

var jsonStr ='{"name":"Liza", "password":"123"}' ;

(2)JSON对象:

var jsonObj = {"name":"Liza", "password":"123"};  //json对象的key键值对中的键必须带有“”

(3)JSON的遍历:

var json1 = { 'name' : 'yy' , 'age' : 11 , 'fun' : '前端开发' };
for( var attr in json1 ){
        alert( attr + ' : ' + json1[attr] );  // 注意这里访问不能用.访问,也不能加引号,否则就代表访问的是json里面名称为attr的值了
}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424036.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Dapper——分布式跟踪系统

分布式跟踪系统 背景 当代的互联网的服务&#xff0c;通常都是用复杂的、大规模分布式集群来实现的。互联网应用构建在不同的软件模块集上&#xff0c;这些软件模块&#xff0c;有可能是由不同的团队开发、可能使用不同的编程语言来实现、有可能布在了几千台服务器&#xff0…

常用加密算法

目录 常见的加密算法可以分成三种&#xff1a; 对称加密算法 DES 3DES AES 非对称加密 RSA ECC Hash算法 MD5 SHA1 算法对比 算法选择 常见的加密算法可以分成三种&#xff1a; 对称加密算法&#xff1b;非对称加密算法&#xff1b;Hash算法&#xff1b;接下来我们…

论文 : Multi-Kernel Broad Learning systems Based on Random Features

Multi-Kernel Broad Learning systems Based on Random Features:A Novel Expansion for Nonlinear Feature Nodes 基于核方法的强大性能&#xff0c;本文提出了一种基于多核的BLS系统扩展方法。首先&#xff0c;将多核形式的非线性特征映射合并为广义学习系统的特征节点; 然后…

液晶显示器输入信号接口(一) —— VGA

VGA1. 简介2. VGA接口3. VGA线4. 技术原理4.1 信号传输4.2 模拟信号的扫描方式4.3 参数本文主要介绍VGA&#xff0c;其它输入输出信号接口介绍可从以下链接跳转&#xff1a; 液晶显示器输入信号接口(二) —— DVI 液晶显示器输入信号接口(三) —— HDMI 液晶显示器输入信号接口…

Mysql高级 学习笔记分享

索引&#xff1a;Index是帮助Mysql高效获取数据的数据结构 索引是一种数据结构 ---排好序的快速查找数据结构 、 某种满足特定查找算法的数据结构、以某种方式指向数据 两大功能&#xff1a;查找快、排好序 目的在于提高查询效率&#xff0c;类比字典 如果没有索引&a…

【Vue】学习笔记-列表渲染/数据监视

列表渲染/数据监视基本列表Key的作用与原理列表过滤列表排序Vue 数据监视原理基本列表 v-for指令 用于展示列表数据语法&#xff1a;v-for“(item,index) in xxx” :key“yyy”可遍历&#xff1a;数组&#xff0c;对象&#xff0c;字符串&#xff08;用的很少&#xff09;&am…

中国农业大学821数据结构经验贴

中国农业大学821经验贴目录个人情况说明初试复习经验数学二英语二政治数据结构复试复习经验目录 个人情况说明 初试成绩 复试成绩 复试成绩在平均水平&#xff0c;综合成绩第五 本科经历 河南双非GPA&#xff1a;3.79&#xff0c;专业排名第6竞赛经历&#xff1a;CCPC省银&…

Matlab进阶绘图第16期—三维填充折线图

三维填充折线图是在三维折线图的基础上&#xff0c;对其与XOY平面之间的部分进行颜色填充&#xff0c;从而能够更好地刻画细节变化。 由于Matlab中未收录三维填充折线图的绘制函数&#xff0c;因此需要大家自行设法解决。 本文使用自制的FilledPlot3小工具进行三维填充折线图…

计算机网络第一章(概述)【湖科大教书匠】

1. 各种网络 网络(Network)由若干**结点(Node)和连接这些结点的链路(Link)**组成多个网络还可以通过路由器互连起来&#xff0c;这样就构成了一个覆盖范围更大的网络&#xff0c;即互联网(互连网)。因此&#xff0c;互联网是"网络的网络(Network of Networks)"**因特…

扩散模型的Prompt指南:如何编写一个明确提示

Prompt&#xff08;提示&#xff09;是扩散模型生成图像的内容来源&#xff0c;构建好的提示是每一个Stable Diffusion用户需要解决的第一步。本文总结所有关于提示的内容&#xff0c;这样可以让你生成更准确&#xff0c;更好的图像 一个好的提示 首先我们看看什么是好的提示…

MCM箱模型建模方法及大气O3来源解析

详情点击链接&#xff1a;MCM箱模型建模方法及大气O3来源解析一、大气中O3形成、MCM和Atchem 2原理及Linux系统安装1.大气中O3形成的原理 2、MCM原理及基本流程3、Atchem 2 下载安装4、Linux系统安装5、Atchem 2 运行需要的其他工具A、Fortran&#xff1b;B、Python&#xff1…

小程序分包(普通分包、独立分包)

普通分包和独立分包的区别 当小程序从普通的分包页面启动的时候&#xff0c;首先需要下载主包独立分包是不依赖看于主包就可以运行&#xff0c;提升分包的执行速度&#xff0c;一个小程序可以有多个独立分包。 独立分包属于分包的一种。普通分包的所有限制都对独立分包有效。独…

基于LDA+SVM实现人脸识别模型

基于LDASVM实现人脸识别模型 描述 人脸识别&#xff08;图像识别&#xff09;是机器学习领域十经典的应用&#xff0c;在本质上&#xff0c;人脸识别属于监督学习中的分类问题。前面章节中我们已经学习了支持向量机&#xff08;SVM&#xff09;&#xff0c;该算法在图像分类领…

专为智能设备安全打造 | 基于ACM32 MCU的智能断路器方案

随着我国电网建设的快速发展&#xff0c;数字化变电站成为建设和研究的热点&#xff0c;数字化变电站的核心在于一次设备的智能化与二次设备的网络化&#xff0c;对于断路器这种极其重要的电力一次设备而言&#xff0c;其智能化的实现有十分重要的意义&#xff0c;断路器智能化…

耗时半月,终于把牛客网上的软件测试面试八股文整理成了PDF合集(测试基础+linux+MySQL+接口测试+自动化测试+测试框架+jmeter测试+测试开发)

大家好&#xff0c;最近有不少小伙伴在后台留言&#xff0c;近期的面试越来越难了&#xff0c;要背的八股文越来越多了&#xff0c;考察得越来越细&#xff0c;越来越底层&#xff0c;明摆着就是想让我们徒手造航母嘛&#xff01;实在是太为难我们这些程序员了。 这不&#xf…

【Git】速食Git,一文学会Git使用

1.什么是版本控制 版本控制是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史&#xff0c;方便查看更改历史记录&#xff0c;备份以便恢复以前的版本的软件工程技术。【通俗来说就跟我们所玩的游戏一样&#xff0c;不断地更新迭代游戏内容&#xff0c;比如…

微服务高级篇学习【4】之多级缓存

文章目录前言一 多级缓存二 JVM进程缓存2.1 案例导入2.1.1 使用docker安装mysql2.1.2 修改配置2.1.3 导入项目工程2.1.4 导入商品查询页面2.1.5 反向代理2.2 初识Caffeine2.3 实现JVM进程缓存三 Lua脚本入门3.1 安装Lua3.2 Lua语法学习四 实现多级缓存4.1 OpenResty简介4.2 Ope…

STK实例场景创建及TLE文件导入

学习过程主要参考杨颖、王琦老师的《STK在计算机仿真中的应用》。&#xff08;值得注意的是&#xff0c;书中的STK版本为5.X&#xff0c;我使用的版本为11.6&#xff09; 创建实例场景 在默认的工具条单击第一个按钮&#xff08;或File→New&#xff09;&#xff0c;并设置场…

【NAS群晖drive异地访问】远程连接drive挂载电脑硬盘「内网穿透」

文章目录前言1.群晖Synology Drive套件的安装1.1 安装Synology Drive套件1.2 设置Synology Drive套件1.3 局域网内电脑测试和使用2.使用cpolar远程访问内网Synology Drive2.1 Cpolar云端设置2.2 Cpolar本地设置2.3 测试和使用3. 结语转发自CSDN远程穿透的文章&#xff1a;【群晖…

魔兽世界私服架设教程—魔兽大服务器合并列表

都说魔兽世界是最经典的网游&#xff0c;可惜我沉迷于程序的世界&#xff0c; 用以下命令down源码 git clone git://github.com/mangos/mangos.git 编译的时候会出错&#xff0c;找不到以下两个文件 revision.h SystemConfig.h 其实以上文件只是简单的定义同个编译的宏而…