当前位置: 首页 > article >正文

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

技术要点: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.kler.cn/news/11917.html

相关文章:

  • 线性代数——矩阵
  • CTR-GCN 论文解读
  • 游戏运营专员的职责有哪些?提高游戏收入的关键是什么?
  • C语言实现惯导更新算法(机械编排)
  • DPDK入门(环境搭建以及小demo)
  • 2022国赛30:windows脚本题解析
  • python入门:cl.exe‘ failed with exit status 2错误通用解决方案
  • 【负荷预测】基于VMD-SSA-LSTM光伏功率预测【可以换数据变为其他负荷等预测】(Matlab代码实现)
  • 优橙内推河南专场——5G网络优化(中高级)工程师
  • mycat读写分离
  • C结构体中末尾的data[0]
  • Java-类的知识进阶
  • yocto 任务
  • 如何构建敏捷项目管理团队?
  • XML与JSON知识学习
  • 防火墙iptables
  • JavaSE学习进阶day03_01 多态
  • MATLAB算法实战应用案例精讲-【深度学习】多尺度特征融合-图像识别(论文篇三)
  • Linux-重启相关日志
  • ChatGPT 被大面积封号,到底发生什么了?
  • 每周一算法:高精度乘法(二)大整数乘大整数
  • UWB成为智慧工厂时代的代表技术
  • 【Linux进阶篇】系统监控命令
  • 什么是Android FrameWork,请你介绍一下?
  • ChatGPT研究报告:AIGC带来新一轮范式转移
  • STM32 库函数 GPIO_SetBits、GPIO_ResetBits、GPIO_WriteBit、GPIO_Write 区别
  • Kettle(9.3.0)连接ClickHouse
  • Android有官方的GPS定位API,为什么还要使用百度/高德定位SDK ?
  • 训练自己的ai模型(三)学习笔记与项目实操(一些概念理解杂谈)
  • 手游平台源码有什么用处?