【纯前端实现xlsx的解析并处理成table需要的格式】

news2024/10/10 14:08:09

概要

xlsx纯前端导入并解析成json

整体架构流程

xlsx导入并解析成json,并与table中的数据进行对比,根据唯一标识更新对应数据项

技术名词解释

  • vue2
  • xlsx

技术细节

  1. 首先下载xlsx依赖
npm install xlsx --save
  1. 然后在需要导入xlsx的地方

在这里插入图片描述
这里主要用input弹出选择文件框 这里的导入按钮自己可以用自己的按钮
需要初始化的数据

data(){
	return{
	tableData:[]
	}
}
  1. 这个方法很重要,展示选择文件框
triggerFileInput(){
	this.$refs.fileInput.click();
}
  1. 然后开始解析xlsx内容
handleFileUpload(event) {
      const file = event.target.files[0];
      if (file) {
        const reader = new FileReader();
        reader.onload = (e) => {
          const data = new Uint8Array(e.target.result);
          const workbook = XLSX.read(data, { type: 'array' });
          const firstSheetName = workbook.SheetNames[0];
          const worksheet = workbook.Sheets[firstSheetName];
          const jsonData = XLSX.utils.sheet_to_json(worksheet, { header: 1 });

          // 处理数据
          this.processData(jsonData);
        };
        reader.readAsArrayBuffer(file);
      }
    },

jsonData格式是这样的

[
  ["变量名", "描述", "计算方式"],
  ["abcd", "婚姻状况", "async"],
  ["abcde", "婚姻状况", "sync"]
]
  1. 然后就是最关键的一步,把这个数据处理成 [{}] ,标准的数组对象格式,我要处理的数据是个表格的数据,大致长这样,这也是tableData的数据
tableData:[
  {
    "vvv": 333,
    "varName": "abcd",
    "sort": "内部",
    "nnn": null,
    "vvv": null,
    "ccc": null,
    "aaa": "derivative",
    "dataType": "Integer",
    "version": 1,
    "description": "测试",
    "templateld": 5454,
    "templateName": "mmm",
    "dataSource": "报告",
    "explanation": "gg",
    "status": 1,
    "createDate": "2024-09-13 17:16:46",
    "history ld": 3232,
    "calculation": "sync"
  }
]
  1. “变量名”, “描述”, “计算方式”,分别对应上面的varName,description,description字段
    接下来就是处理方法了
processData(jsonData) {
  // 取得 Excel 数据(跳过标题行)
  const excelData = jsonData.slice(1);

  // 将 Excel 数据转换为对象数组
  const updatedData = excelData.map(row => {
    return {
      varName: row[0] ? row[0].replace(/\n/g, '') : '', // 去除换行符 
      description: row[1] || '', // 如果 row[1] 不存在,返回空字符串
      calculation: row[2] || '' // 如果 row[2] 不存在,返回空字符串
    };
  });

       // 更新 tableData
      this.tableData.forEach(baseItem => {
        const matchedItem = updatedData.find(item => item.varName === baseItem.varName);
        if (matchedItem) {
          baseItem.description = matchedItem.description;
          baseItem.calculation = matchedItem.calculation;
        }
      });
},,

注* varName: row[0] ? row[0].replace(/\n/g, '') : '', // 去除换行符

这里很关键,因为直接解析xlsx,处理成的数据带换行符/n,所有刚开始怎么都替换数据不成功,因为数据带/n

  1. 这里的数据就已经替换成功了,这里其实是批量修改数据,因为是根据varName进行匹配的,如果有不匹配也需要导入的需求自己修改一下逻辑就行。

小结

纯前端实现xlsx的解析并处理成标准table需要的格式

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

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

相关文章

基于模型的强化学习方法4大类灌水范式

我们都知道基于模型的强化学习,就是从数据中学一个环境模型。 举个例子,我们要控制一个马达,输入就是电流,输出就是转速。无模型强化学习就是随机采样,然后从数据中直接学习输入到输出的影射,研究重心在如…

【AAOS】Android Automotive 10模拟器源码下载及编译

源码下载 repo init -u https://android.googlesource.com/platform/manifest -b android-10.0.0_r47 repo sync -c --no-tags --no-clone-bundle 源码编译 source build/envsetup.sh lunch aosp_car_x86_64-userdebug make -j8 运行效果 emualtor Cluster Home Map All …

大模型部署-​Ollama+WebUI

Ollama(安装包和安装文档文末领取!) Ollama 简介 主要特点: 易于使用:它提供了一个简洁的界面和命令行工具,使得用户可以方便地管理和运行不同的大语言模型。 多种模型支持:可以运行多种开源…

ip地址换网就不一样了吗?ip地址会因什么变动而变化

在当今数字化时代,IP地址作为网络设备的唯一标识,扮演着至关重要的角色。然而,对于许多用户来说,IP地址的变动仍然是一个充满疑惑的话题。那么,IP地址换网就真的不一样了吗?本文将深入探讨IP地址变动的因素…

力扣1~10题

题1(简单). 思路: 因为时间复杂度小于n^2,所以不能双for遍历,怎么优化? 这里采用一个键值对的形式,存储nums离target的间隔和它的下标,只要n,然后再遍历nums有没有刚好是这个距离的就…

SwiftUI 在 iOS 18 中的 ForEach 点击手势逻辑发生改变的解决

概述 原本在 iOS 17 中运行良好的 SwiftUI 代码突然在 iOS 18 无法正常工作了,具体表现为原来视图中的的点击手势无法响应。 这是怎么回事呢? 且看分解!Let’s go!!!😉 问题现象 从下面的演示…

自动驾驶系列—GPS技术在自动驾驶中的应用与挑战:全面解析

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

海量案例!点击洞察2024年工业数字孪生发展趋势

如果能在虚拟世界中完美复制出现实中的物体或系统,将会带来怎样的变革?数字孪生正是这样一种神奇的存在——它将物理世界中的设备或系统转化为精确的虚拟模型,通过实时数据的采集、分析与应用,创造出一个与“物理实体”完全对应的…

Apache DolphinScheduler-1.3.9源码分析(二)

引言 随着大数据的发展,任务调度系统成为了数据处理和管理中至关重要的部分。Apache DolphinScheduler 是一款优秀的开源分布式工作流调度平台,在大数据场景中得到广泛应用。 在本文中,我们将对 Apache DolphinScheduler 1.3.9 版本的源码进…

python安装第三方库的问题与解决方法

1 速度过慢 大部分第三方库都是在国外网站,如果直接使用pip install 包名,下载速度会很慢,这对一些大型包是很致命的,如果下载中断则需要重头再来。 解决方案:使用国内镜像(如清华镜像下载)&a…

Vue 脚手架学习

1.使用 Vue 脚手架 1.1 初始化脚手架 1.1.1 具体步骤 第一步(仅第一次执行):全局安装vue/cli。 npm install -g vue/cli 第二步:切换到你要创建项目的目录,然后使用命令创建项目 vue create xxxx 第三步:启…

AI绘画Stable Diffusion XL优化终极指南!

前言 如何在自己的显卡上获得SDXL的最佳质量和性能,以及如何选择适当的优化方法和工具,这一让GenAI用户倍感困惑的问题,业内一直没有一份清晰而详尽的评测报告可供参考。直到全栈开发者Flix San出手。 在本文中,Flix介绍了相关SD…

9个热门.Net开源项目汇总!

今天盘点下9月份推荐的9个开源项目(点击标题查看详情)。 1、Pidgin:一个轻量级、快速且灵活的 C# 解析库 Pidgin是基于C#的开源项目,是一个解析组合器库,提供了一个高级别的声明性工具来构建解析器,使得编…

雅达利“美洲虎“游戏机在iPhone模拟应用程序中重生

"美洲虎"是雅达利在 1993 年推出一年后,索尼的 PlayStation 和世嘉的土星接手之前,在日益拥挤的家用游戏机市场上保持竞争力的最后一次尝试。 虽然从未在商业上取得成功,但它仍然拥有一批忠实的粉丝,他们欣赏美洲虎独特…

SpringBoot框架下的美发店管理系统开发指南

1系统概述 1.1 研究背景 随着计算机技术的发展以及计算机网络的逐渐普及,互联网成为人们查找信息的重要场所,二十一世纪是信息的时代,所以信息的管理显得特别重要。因此,使用计算机来管理美发门店管理系统的相关信息成为必然。开发…

未来已来:AIGC时代为办公方式带来智能化转型与革新

文章目录 一、Excel:从数据处理到智能分析二、Word:从文档编辑到智能写作三、PowerPoint:从幻灯片制作到智能演示四、AI智能办公的挑战与未来《AI智能办公实战108招:ChatGPTWordPowerPointWPS》编辑推荐内容简介作者简介内页插图目…

双十一好物必买榜:数码好物推荐!

​双十一该入手一些好物来准备度过下一年,选择几款数码好物和工作都用得到的实用好物陪伴冬天是能够让自己更积极的迎接生活,能够让自己更开心满足的方式。适当的购物也是能够缓解工作压力,心情不好的方法,但依然要选择买回家不会…

Python办公自动化之TXT

在日常办公中,我们常常需要处理大量的 TXT 文件,比如记录日志、存储数据或是阅读文件内容。Python 作为一款高效的编程语言,可以轻松完成这些任务,为我们的办公流程提供极大的便利。那么,如何利用 Python 办公自动化来…

PDFPatcher:一个无所不能的开源PDF处理工具

如果你工作中,经常需要处理PDF文件,那这款工具绝对可以满足你的所有需求,PDFPatcher一款功能强大的开源PDF处理工具。 01 项目简介 这是一款基于.NET Framework 4.0 到 4.8 版本开发的开源工具,主要采用 iText 和 MuPDF 这两个开…

快速了解2024与AI相关的诺贝尔奖大佬重要知识!

北京时间10月8日下午5点45分许,2024年诺贝尔物理学奖揭晓。美国普林斯顿大学科学家约翰霍普菲尔德(John J. Hopfield)和加拿大多伦多大学科学家杰弗里辛顿(Geoffrey E. Hinton)获奖,以表彰他们“基于人工神…