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

vue上传解析excel表格并修改字段名

目录

 

1.安装 xlsx

2.引入 

3.使用


1.安装 xlsx

npm install xlsx

2.引入 

import * as XLSX from 'xlsx';

3.使用

<template><div class="UploadCptOutbox"><div class="Tooloutbox"><el-uploadclass="upload"ref="upload"accept=".xlsx, .xlsm, .xls":auto-upload="false"action="#":limit="1":show-file-list="false":multiple="false":on-change="ImportExcel"><el-button size="small" type="primary">上传</el-button></el-upload></div><div class="TableOutbox"></div></div>
</template>
<script>
import * as XLSX from "xlsx";
import { GenNonDuplicateID } from "@/utils/creatuniid";
export default {name: "UploadCpt",components: {},data() {return {};},methods: {// 导入表格ImportExcel(param) {// console.log(param);this.File2Xce(param).then((item) => {if (item && item.length > 0) {// xlsxJson就是解析出来的json数据,数据格式如下// [{sheetName: sheet1, sheet: sheetData }]console.log(`导入表格---item`, item);this.QueryCodeTableData(item);if (item[0] && item[0].sheet && item[0].sheet.length) {this.tableData = item[0].sheet; //把数据塞到表格预览}}}).catch((error) => {loading.close();});},/*** 解析文件* @param {Object} file*/File2Xce(file) {return new Promise((resolve, reject) => {const reader = new FileReader();reader.onload = (e) => {const data = e.target.result;this.wb = XLSX.read(data, {type: "binary",});const result = [];this.wb.SheetNames.forEach((sheetName) => {let newSheet = this.RenameFields(XLSX.utils.sheet_to_json(this.wb.Sheets[sheetName]));result.push({Name: sheetName,List: newSheet,Id: GenNonDuplicateID(13),});});/* console.log("解析")console.log(result) */resolve(result);};reader.readAsBinaryString(file.raw);});},//更新字段名RenameFields(data) {// 假设我们要修改字段名为新字段名const newFields = {分区名称: "GroupName",边界表名称: "CodeName",分区编号: "GroupNo",边界表位号: "Code",进出口关系: "Relation",//'旧字段名2': '新字段名2',};return data.map((row, index) => {const newRow = { ...row };Object.keys(newFields).forEach((oldKey) => {const newKey = newFields[oldKey];if (oldKey in row) {newRow[newKey] = row[oldKey];delete newRow[oldKey];}});newRow.Id = GenNonDuplicateID(16);return newRow;});},QueryCodeTableData(Data) {this.LoadingServeFun = this.$loading({lock: true,text: "数据加载中...",spinner: "el-icon-loading",background: "rgba(0, 0, 0, 0.7)",});let AreaListAll = [[{Id: "3575f073-0459-41cf-b2fb-ce25f2eebe91",AreaName: "区域1",},{Id: "0cfb0f17-8185-4f16-93b2-3c1088d55573",AreaName: "区域2",},{Id: "3543dade-baf0-47b4-aaed-f97181c1cd5f",AreaName: "区域3",},],];Data.map((ele, index) => {ele.AreaList = AreaListAll[index];});console.log(`QueryCodeTableData---Data`, Data);this.$store.dispatch("ConfigViewPageModule/QueryCodeTableDataFun", Data).then(() => {this.$store.dispatch("ConfigViewPageModule/ActiveItemQueryCodeTableDataFun",Data[0]);this.LoadingServeFun.close();});},},
};
</script>
<style lang="scss" scoped>
.UploadCptOutbox {width: 100%;height: 100%;.Tooloutbox {display: flex;flex-flow: row nowrap;align-items: center;width: 100%;height: 40px;.upload {margin-left: 20px;}}.TableOutbox {width: 100%;height: calc(100% - 40px);}
}
</style>

creatuniid.js

//生成指定长度的唯一ID
export function GenNonDuplicateID(randomLength) {return Number(Math.random().toString().substr(3, randomLength) + Date.now()).toString(36);
}

 

相关文章:

vue上传解析excel表格并修改字段名

目录 1.安装 xlsx 2.引入 3.使用 1.安装 xlsx npm install xlsx 2.引入 import * as XLSX from xlsx; 3.使用 <template><div class"UploadCptOutbox"><div class"Tooloutbox"><el-uploadclass"upload"ref"u…...

jupyter notebook删除kernel & conda 删除虚拟环境

jupyter kernelspec list #列出jupyter的所有kernel jupyter kernelspec remove kernel_name #删除特定的kerneljupyter kernelspec list 命令可以在任何激活的环境中运行&#xff0c;无论是 base 环境还是某个虚拟环境。该命令将列出所有已注册的 Jupyter 内核&#xff0c;包括…...

Redis在生产环境中可能遇到的问题与解决方案(三)

11. Redis高可用问题 问题描述 在Redis集群中&#xff0c;当主节点发生故障时&#xff0c;需要快速切换到备用主节点&#xff0c;确保系统高可用。 解决方案 Redis Sentinel&#xff1a; 使用Redis Sentinel进行主从节点的监控和自动故障转移。 备用主节点&#xff1a; 配置…...

【C++干货铺】 RAII实现智能指针

个人主页点击直达&#xff1a;小白不是程序媛 C系列专栏&#xff1a;C干货铺 代码仓库&#xff1a;Gitee 目录 为什么需要智能指针&#xff1f; 内存泄漏 什么是内存泄漏&#xff0c;内存泄露的危害 内存泄漏的分类 堆内存泄漏&#xff08;Heap leak&#xff09; 系统资…...

【竞技宝jjb.lol】LOL:xiaohu岩雀天命抢龙扭转乾坤 WBG2-0轻取RA

北京时间2024年1月26日&#xff0c;英雄联盟LPL2024春季赛在昨天迎来第一周第四个比赛日&#xff0c;本日首场比赛由WBG对阵RA。本场比赛RA虽然在首局前期给了WBG很大的压力&#xff0c;但WBG还是凭借后期出色的团战配合拿下胜利&#xff0c;最终WBG2-0轻取RA。以下是本场比赛的…...

GoZero微服务个人探究之路(九)api文件编写总结

参考来源go-zero官方文档https://go-zero.dev/docs/tutorials 前言 go-zero是目前star最多的go语言微服务框架&#xff0c;api 是 go-zero特殊的语言&#xff0c;类型文件&#xff0c;go-zero自带的goctl可以通过.api文件生成http服务代码 api文件内容编写 不可使用关键字 …...

泛型..

1.泛型 所谓泛型 在类定义处是一种类型参数(我们平常所见到的参数指的就是方法中的参数 他接收有外界传递来的值 然后在方法中进行使用) 在类内部的话 则充当一种占位符 并且还提高了代码的复用率 何以见得提高了代码的复用率 其实就是通过对比使用了泛型技术和没有使用泛型技…...

Android App开发基础(1)—— App的开发特点

本文介绍基于Android系统的App开发常识&#xff0c;包括以下几个方面&#xff1a;App开发与其他软件开发有什么不一样&#xff0c;App工程是怎样的组织结构又是怎样配置的&#xff0c;App开发的前后端分离设计是如何运作实现的&#xff0c;App的活动页面是如何创建又是如何跳转…...

docker-compose初探

我一直直接使用docker命令来创建容器&#xff0c;没有怎么用过docker-compose。也不知道docker-compose和docker有什么区别&#xff0c;docker-compose有什么好处。 现在我约略认为&#xff0c;docker-compose是一个简化docker命令的工具&#xff0c;或者说&#xff0c;它是能…...

【webrtc】跟webrtc学时间戳、序号类型转换

间隔ms src\modules\congestion_controller\remb_throttler.ccnamespace {constexpr TimeDelta kRembSendInterval = TimeDelta::Millis(200); } // namespace百分比的处理 src\modules\congestion_controller\remb_throttler.ccvoid RembT...

文件操作与IO(一些小项目)

在指定目录中寻找文件 扫描指定目录,并找到名称对应的所有文件(不包含目录). import java.io.File; import java.util.Scanner;public class Project1 {public static void main(String[] args) {//1.输入必要的信息Scanner sc new Scanner(System.in);System.out.println(&…...

C语言-算法-线性dp

[USACO1.5] [IOI1994]数字三角形 Number Triangles 题目描述 观察下面的数字金字塔。 写一个程序来查找从最高点到底部任意处结束的路径&#xff0c;使路径经过数字的和最大。每一步可以走到左下方的点也可以到达右下方的点。 在上面的样例中&#xff0c;从 7 → 3 → 8 →…...

Pandas应用-股票分析实战

股票时间序列 时间序列&#xff1a; 金融领域最重要的数据类型之一 股价、汇率为常见的时间序列数据 趋势分析&#xff1a; 主要分析时间序列在某一方向上持续运动 在量化交易领域&#xff0c;我们通过统计手段对投资品的收益率进行时间序列建模&#xff0c;以此来预测未来的收…...

Database history tablesupgraded

zabbix升级到6之后&#xff0c;配置安装完成会有一个红色输出&#xff0c;但是不影响zabbix使用&#xff0c;出于强迫症&#xff0c;找到了该问题的解决方法。 Database history tables upgraded: No. Support for the old numeric type is deprecated. Please upgrade to nume…...

Dify学习笔记-应用发布(四)

1、发布为公开 Web 站点 使用 Dify 创建 AI 应用的一个好处在于&#xff0c;你可以在几分钟内就发布一个可供用户使用的 Web 应用&#xff0c;该应用将根据你的 Prompt 编排工作。 如果你使用的是自部署的开源版&#xff0c;该应用将运行在你的服务器上 如果你使用的是云服务&…...

优化用户体验测试应用领域:提升产品质量与用户满意度

在当今数字化时代&#xff0c;用户体验测试应用已经成为确保产品质量、提升用户满意度的关键工具。随着技术的不断发展&#xff0c;用户的期望也在不断演变&#xff0c;因此&#xff0c;为了保持竞争力&#xff0c;企业必须将用户体验置于产品开发的核心位置。本文将探讨用户体…...

顶顶通呼叫中心中间件机器人压力测试配置(mod_cti基于FreeSWITCH)

介绍 顶顶通呼叫中心中间件机器人压力测试(mod_cit基于FreeSWITCH) 一、配置acl.conf 打开ccadmin-》点击配置文件-》点击acl.conf-》我这里是已经配置好了的&#xff0c;这里的192.168.31.145是我自己的内网IP&#xff0c;你们还需要自行修改 二、配置线路 打开ccadmin-&g…...

Debezium发布历史87

原文地址&#xff1a; https://debezium.io/blog/2020/03/19/integration-testing-for-change-data-capture-with-testcontainers/ 欢迎关注留言&#xff0c;我是收集整理小能手&#xff0c;工具翻译&#xff0c;仅供参考&#xff0c;笔芯笔芯. 使用 Testcontainer 进行变更数…...

Leetcode131.分割回文串-Palindrome Patitioning-Python-回溯法

解题思路&#xff1a; 1.切割回文串&#xff0c;可以用解决找组合问题的思路解决&#xff0c;而解决组合问题&#xff0c;可以用回溯法&#xff0c;故本题选择回溯法。 2.理解两个事情&#xff1a;1.递归函数里的for循环是横向遍历给定字符串s的每一个字母。2.针对s的每一个字…...

Java面试——基础篇

目录 1、java语言有哪些优点和缺点? 2、JVM 、 JDK 和 JRE的关系 3、为什么说 Java 语言“编译与解释并存”&#xff1f; 4、Java和c的区别 5、基本数据类型 5.1、java的8种基本数据类型&#xff1a; 5.2、基本类型和包装类型的区别&#xff1a; 5.3、包装类型的缓存机…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

深度学习在微纳光子学中的应用

深度学习在微纳光子学中的主要应用方向 深度学习与微纳光子学的结合主要集中在以下几个方向&#xff1a; 逆向设计 通过神经网络快速预测微纳结构的光学响应&#xff0c;替代传统耗时的数值模拟方法。例如设计超表面、光子晶体等结构。 特征提取与优化 从复杂的光学数据中自…...

R语言AI模型部署方案:精准离线运行详解

R语言AI模型部署方案:精准离线运行详解 一、项目概述 本文将构建一个完整的R语言AI部署解决方案,实现鸢尾花分类模型的训练、保存、离线部署和预测功能。核心特点: 100%离线运行能力自包含环境依赖生产级错误处理跨平台兼容性模型版本管理# 文件结构说明 Iris_AI_Deployme…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例

使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件&#xff0c;常用于在两个集合之间进行数据转移&#xff0c;如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model&#xff1a;绑定右侧列表的值&…...

(二)TensorRT-LLM | 模型导出(v0.20.0rc3)

0. 概述 上一节 对安装和使用有个基本介绍。根据这个 issue 的描述&#xff0c;后续 TensorRT-LLM 团队可能更专注于更新和维护 pytorch backend。但 tensorrt backend 作为先前一直开发的工作&#xff0c;其中包含了大量可以学习的地方。本文主要看看它导出模型的部分&#x…...

FastAPI 教程:从入门到实践

FastAPI 是一个现代、快速&#xff08;高性能&#xff09;的 Web 框架&#xff0c;用于构建 API&#xff0c;支持 Python 3.6。它基于标准 Python 类型提示&#xff0c;易于学习且功能强大。以下是一个完整的 FastAPI 入门教程&#xff0c;涵盖从环境搭建到创建并运行一个简单的…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...