前端做excel的录入解析,将excel的数据传给后端,显示在页面上。

news2024/11/24 10:57:53

具体的流程如图所示:

1.点击excel录入按钮 

2.打开弹框

 3.点击上传按钮,会自动打开计算机本地文件,选择想上传的文件,点击打开

 4.会将excel的数据解析成一个表格,可以在表格中做删除操作,点击确定

 5.将excel的人员与系统中的人员做一个对比,若不在系统中,则无法录入。

 6.最后将刚刚加入的人,和以前本来就在表中的人,一起显示在页面上。

 

 其中,具体要介绍的是本地的excel表格的数据是如何解析渲染在网页中。确保excel的数据一定是有姓名和出生年月,否则作废不渲染。

下载安装xlsx并引入

npm i xlsx -S

import * as xlsx from "xlsx";

1.首先写一个文件上传的按钮

 <input class="filePrew" type="file" ref="file"
                    accept="application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,application/vnd.ms-excel"
                    id="file" @change="getFileSize"/>

2.在方法中写:在这一步就将文件获取,并判断excel中是否包含了姓名和出生年月,同时自己要定义一个默认的表头

 tableArr: [
        { label: "姓名", prop: "xm", index: "1", width: "60px" },
        { label: "出生年月", prop: "csnyStr", index: "2",width: "80px" },
        { label: "任免类型", prop: "RmType", index: "3" , width: "100px"},
        { label: "拟任职", prop: "nrz", index: "4", width: "100px" },
        { label: "拟免职", prop: "nmz", index: "5",width: "100px"},
        { label: "任免后职务层次", prop: "SetZwjb", index: "6" },
        { label: "任免后公务员职级", prop: "rmhgwyzj", index: "7" }
      ],
getFileSize(v) {
      if (v.target.value) {
        this.file = v.target.files[0];
        // 读取 Excel 文件
        let file = this.file;
        file = new Blob([file]);
        console.log(file);
        const fileReader = new FileReader();
        fileReader.readAsArrayBuffer(file);
        fileReader.onload = () => {
          // 将文件转换为二进制数据
          const data = new Uint8Array(fileReader.result); // 使用 SheetJS 解析 Excel 文件
          const workbook = xlsx.read(data, { type: "array" }); // 获取第一个工作表
          const worksheet = workbook.Sheets[workbook.SheetNames[0]]; // 将工作表数据转换为 JSON 格式 // 分析对应关系
          const jsonData = xlsx.utils.sheet_to_json(worksheet, { header: 1 }); // 表头序号 0 1 2 3
          const columnNames = Object.keys(jsonData[0]);
          const columnKeyName = jsonData[0];
          if (
            columnKeyName.indexOf("姓名") >= 0 &&
            columnKeyName.indexOf("出生年月") >= 0
          ) {
            for (let i = 1; i < jsonData.length; i++) {
              let person = {};
              for (let str in this.tableArr) {
                let col = this.tableArr[str].label;
                let index = columnKeyName.indexOf(col);
                if (index >= 0) {
                  let val = jsonData[i][index];
                  person[this.tableArr[str].prop] = val;
                }
              }
              this.tabelDataExcel.push(person);
            }
            console.log(this.tabelDataExcel);
          }
          // 清空上传列表
          v.target.value = "";
          console.log("jsonData:", jsonData);
          console.log("columnNames:", columnNames);
          console.log("columnKeyName:", columnKeyName);
        };
      }
    },

3.这样我们拿到了Excel的值后,就可以将每行数据传递给后端做处理。

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

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

相关文章

DeFi新篇章 | Sui上原生订单簿DeepBook正式上线

随着原生去中心化中央限价订单簿&#xff08; Central Limit Order Book&#xff0c;CLOB&#xff09;DeepBook的推出&#xff0c;Sui上的DeFi开启了新篇章。DeepBook由一群Sui贡献者共同构建&#xff0c;为新一代DeFi应用提供了一个稳定的流动性层。 通过DeepBook&#xff0c…

Oracle select语法

SQL 语言介绍 SQL(Structured Query Language)为数据库的语言&#xff0c;在 1974 年由Boyce【博伊斯】和Chamberlin【钱伯林】提 出的一种介于关系代数与关系演算之间的结构化查询语言&#xff0c;是一个通用的、功能极强的关系型数据库语言。包含三部分 DDL(Data Definitio…

Spring Boot配置文件与日志

目录 配置文件配置文件格式.propertiesyml 读取配置文件内容根据不同环境配置不同属性 日志自定义日志的打印更简单的日志打印日志级别日志级别的设置 日志的持久化 配置文件 Spring Boot项目的重要数据都是在配置文件中设置的。配置文件可以包含各种属性和值&#xff0c;用于…

LeetCode_面试题 01.01. 判定字符是否唯一

题目描述 面试题 01.01. 判定字符是否唯一https://leetcode.cn/problems/is-unique-lcci/ 实现一个算法&#xff0c;确定一个字符串 s 的所有字符是否全都不同。 示例 1&#xff1a; 输入: s "leetcode" 输出: false 示例 2&#xff1a; 输入: s "abc"…

中国黄金品牌怎么代理

想选择一个项目创业其实不难&#xff0c;中国黄金这个品牌相信大家都已经相当的熟悉&#xff0c;它成立于1979年&#xff0c;是业界中的佼佼者&#xff0c;一直致力于为消费者提供黄金、白银、珠宝等的产品&#xff0c;无论是产品质量还是服务&#xff0c;都在行业中处于领先地…

数据备份、还原、视图、索引 操作练习

目录 备份与还原&#xff1a; 题目要求&#xff1a; 索引和视图 题目要求&#xff1a; 备份与还原&#xff1a; 在数据库booksDB中创建表books、authorbook、authorbook&#xff1a; 题目要求&#xff1a; 1、mysqldump -uroot -pRyh201314% booksDB > /backup/db/boo…

jsonschema networknt json-schema-validator 高级能力json 数字很大时, 变成什么类型

入参校验产品化 schema_个人渣记录仅为自己搜索用的博客-CSDN博客 自动变成了bigInteger类型. 哪怕你的jsonSchema 配置的是integer , 不冲突.

Redis深入——管道、发布订阅、主从复制、哨兵监控和集群

前言 在前面的学习中&#xff0c;我们已经了解了Redis的基本语法以及Redis持久化和事务的概念。而在这篇文章中我们继续来梳理管道、发布订阅、主从复制、哨兵监控和集群的知识&#xff0c;理解Redis主从复制到集群分片的演进过程&#xff0c;希望对正在学习的小伙伴有一定的帮…

1039家校通SQL注入获取管理员权限

我们承认伟人在历史过程中的贡献。可人类生活的大厦从本质上说&#xff0c;是由无数普通人的血汗乃至生命所建造的。伟人们常常企图用纪念碑或纪念堂来使自己永世流芳。真正万古长青的却是普通人的无人纪念碑——生生不息的人类生活自身。是的&#xff0c;生活之树常青。 漏洞…

Signal-iOS 5.9.0编译问题

1.当我们使用pod管理 pod SDWebImage/WebP , 执行 pod install 时,发生报错.先看具体报错 : 截屏2020-07-06 上午11.12.15.png 2.报错产生原因是由于git clone 的地址是 https://chromium.googlesource.com/webm/libwebp,需要FQ 3.不想FQ,可以使用github上的地址https://githu…

Python实现word简历中图片模糊

Python实现word简历中照片模糊——保护个人隐私的有效方法 一、引言背景 在现代招聘流程中&#xff0c;电子简历成为了主要的招聘方式之一。然而&#xff0c;简历中包含的个人信息往往涉及隐私问题&#xff0c;特别是照片。为了保护求职者的个人隐私和数据安全&#xff0c;许多…

MySQL数据备份与恢复,索引,视图的简单练习

目录 一. 数据备份与恢复 &#xff08;1&#xff09;素材如下&#xff1a; 创建表格如下&#xff1a; &#xff08;2&#xff09; 1、使用mysqldump命令备份数据库中的所有表 2、备份booksDB数据库中的books表 3、使用mysqldump备份booksDB和test数据库&#xff08;test数…

2023最新版本Activiti7系列-身份服务

身份服务 在流程定义中在任务结点的 assignee 固定设置任务负责人&#xff0c;在流程定义时将参与者固定设置在.bpmn 文件中&#xff0c;如果临时任务负责人变更则需要修改流程定义&#xff0c;系统可扩展性差。针对这种情况可以给任务设置多个候选人或者候选人组&#xff0c;可…

面试题更新之-HTML5的新特性

文章目录 导文新特性有哪些&#xff1f;HTML5的新特性带来了许多好处 导文 面试题更新之-HTML5的新特性 新特性有哪些&#xff1f; HTML5引入了许多新特性和改进&#xff0c;以下是一些HTML5的新特性&#xff1a; 语义化标签&#xff1a;HTML5引入了一系列的语义化标签&#…

layui实现动态添加选项卡

前言 上一篇博客介绍了树形菜单的实现&#xff0c;这一篇将继续完善通过点击左侧树形菜单实现动态打开选项卡Tab 一. 什么是Tab选项卡 Tab广泛应用于Web页面&#xff0c;因此我们也对其进行了良好的支持&#xff08;简约风格、卡片风格、响应式Tab以及带删除的Tab等等&#…

机器视觉初步13:3D相机介绍

文章目录 1. 结构光&#xff08;Structured Light&#xff09;2. 飞行时间&#xff08;Time of Flight&#xff0c;ToF&#xff09;3. 双目视觉&#xff08;Stereo Vision&#xff09;4. 线扫描&#xff08;Line Scan&#xff09;5. 散斑&#xff08;Speckle&#xff09; 在工业…

算法训练营第三十七天||● 738.单调递增的数字 ● 968.监控二叉树 ● 总结

● 738.单调递增的数字 为了方便遍历&#xff0c;先将int型转换为string类型&#xff0c;从后往前遍历&#xff0c;记住要设定一个flag标志 例如&#xff1a;98&#xff0c;一旦出现strNum[i - 1] > strNum[i]的情况&#xff08;非单调递增&#xff09;&#xff0c;首先想…

(数据结构)(C++)数组——约瑟夫环求解

#define _CRT_SECURE_NO_WARNINGS 1 #include <iostream>#define MaxSize 10using namespace std;void josephus(int n,int m)//一共n个人数到m的出列 {int p[MaxSize];int i,j,t;for(i0;i<n;i){p[i]i1;//构建初始序列&#xff08;1,2,3,4.....) } t0;//首次报数起始位…

【剑指offer】17. 正则表达式匹配(java)

文章目录 正则表达式匹配描述示例1示例2示例3示例4思路完整代码 正则表达式匹配 描述 请实现一个函数用来匹配包括’.‘和’*的正则表达式。 1.模式中的字符’.表示任意一个字符 2.模式中的字符’*表示它前面的字符可以出现任意次&#xff08;包含0次&#xff09;。 在本题…

scrapy---爬虫界的django

1介绍 scrapy架构 引擎(EGINE)&#xff1a;引擎负责控制系统所有组件之间的数据流&#xff0c;并在某些动作发生时触发事件。大总管&#xff0c;负责整个爬虫数据的流动 调度器(SCHEDULER)用来接受引擎发过来的请求, 压入队列中, 并在引擎再次请求的时候返回. 可以想像成一个U…