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

elemenui的Upload上传整合成数组对象

1. 普通直接上传

<el-upload action="" :before-upload="doBeforeUpload"><el-button type="success" size="mini">导入</el-button></el-upload>
methods:{doBeforeUpload(file) {let reader = new FileReader();// 使用 FileReader 对象读取文件内容// 当文件读取完成时的回调函数reader.onload = e => {const xlsx = require('xlsx');let data = e.target.result;// 使用 xlsx 库解析 Excel 文件let workbook = xlsx.read(data, { type: 'binary' });let sheet = workbook.Sheets[workbook.SheetNames[0]];// 将 Excel 表格数据转换为 JSON 格式let json = xlsx.utils.sheet_to_json(sheet, { header: 1, defval: null });console.log("json", JSON.stringify(json));// 处理数据,将每一行转换为对象let headers = json[0];let result = [];for (let i = 1; i < json.length; i++) {let obj = {};// 将每一行的值与表头对应起来,创建一个新的对象for (let j = 0; j < headers.length; j++) {obj[headers[j]] = json[i][j];}result.push(obj);// 将对象添加到新的数组中}console.log("最终数组==》", result);}reader.readAsBinaryString(file);// 以二进制字符串的形式读取文件内容return false; // 返回 false 阻止默认上传行为}}

=======》》输出

如果是第二行读取把

json[0]改成json[1]

for循环的i改成2即可

2. 拖拽上传

重点是handleChange方法,下面拿到json数据了,后面想怎么玩就怎么玩,可以根据上面普通版的整合成数组对象,下面我就不整合了

<template><div><el-upload ref="upload" accept=".xlsx, .xls"action="https://jsonplaceholder.typicode.com/posts/":on-progress="handleFileUploadProgress":on-success="handleFileSuccess":on-change="handleChange":on-remove="handleRemove":auto-upload="false" drag><i class="el-icon-upload"></i><div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div><div class="el-upload__tip" slot="tip">只能上传jpg/png文件,且不超过500kb</div></el-upload><div slot="footer" class="dialog-footer"><el-button type="primary" @click="submitFileForm">导 入</el-button></div></div></template><script>
export default {data(){return{params: [], // 存储文件内容的数组对象}},methods:{/*** 提交form表单*/submitFileForm() {console.log("提交上传附件内容",this.params)},/*** 文件选择后处理   -------------   重点,在这里处理数据* @param file* @param fileList* @returns {Promise<void>}*/async handleChange(file, fileList) {console.log("文件选择后处理")let reader = new FileReader();// 使用 FileReader 对象读取文件内容// 当文件读取完成时的回调函数reader.onload = e => {const xlsx = require('xlsx');let data = e.target.result;// 使用 xlsx 库解析 Excel 文件let workbook = xlsx.read(data, { type: 'binary' });let sheet = workbook.Sheets[workbook.SheetNames[0]];// 将 Excel 表格数据转换为 JSON 格式let json = xlsx.utils.sheet_to_json(sheet, { header: 1, defval: null });console.log("json", JSON.stringify(json));}// 从File对象创建Bloblet blob = file.raw.slice(0, file.raw.size, file.type);// 将Blob作为二进制字符串读取reader.readAsBinaryString(blob);},/***  文件上传中处理* @param event* @param file* @param fileList*/handleFileUploadProgress(event, file, fileList) {console.log("文件上传中处理")},/*** 文件上传成功处理* @param response* @param file* @param fileList*/handleFileSuccess(response, file, fileList) {console.log("文件上传成功处理")},/*** 文件移除后处理* @param file* @param fileList*/handleRemove(file, fileList) {console.log("文件移除后处理")},}
}
</script>

3. 多个Sheet页

这是修改第二个handleChange方法的代码

async handleChange(file, fileList) {console.log("文件选择后处理");let reader = new FileReader();// 当文件读取完成时的回调函数reader.onload = e => {const xlsx = require('xlsx');let data = e.target.result;// 使用 xlsx 库解析 Excel 文件let workbook = xlsx.read(data, { type: 'binary' });// 遍历所有表格名称workbook.SheetNames.forEach(sheetName => {let sheet = workbook.Sheets[sheetName];// 将 Excel 表格数据转换为 JSON 格式let json = xlsx.utils.sheet_to_json(sheet, { header: 1, defval: null });console.log(`${sheetName} 表格的数据:`, JSON.stringify(json));});};// 从 File 对象创建 Bloblet blob = file.raw.slice(0, file.raw.size, file.type);// 将 Blob 作为二进制字符串读取reader.readAsBinaryString(blob);},

相关文章:

elemenui的Upload上传整合成数组对象

1. 普通直接上传 <el-upload action"" :before-upload"doBeforeUpload"><el-button type"success" size"mini">导入</el-button></el-upload> methods:{doBeforeUpload(file) {let reader new FileReader(…...

莫桑比克市场开发攻略,收藏一篇就够了

中国与莫桑比克之间的经贸关系源远流长&#xff0c;两国之间的贸易和投资合作呈现出快速增长的趋势。莫桑比克是农业国&#xff0c;生产以及生活资料依赖进口&#xff0c;市场潜力还是非常不错的&#xff0c;今天就给大家分享一下。文章略长&#xff0c;大家点赞收藏关注慢慢看…...

go语言学习

1、示例代码&#xff1a; imgName : g.Cfg().MustGet(ctx, "migrate.img-arm-rbd").String() 在给定的代码行中&#xff0c;g.Cfg() 是一个函数调用&#xff0c;它返回一个配置对象。MustGet(ctx, "migrate.img-arm-rbd") 则是在这个配置对象上调用的方法…...

安哥拉市场开发攻略,收藏一篇就够了

安哥拉是非洲南部的一个国家&#xff0c;中国是安哥拉最大的贸易伙伴&#xff0c;安哥拉是中国在非洲的第二大贸易伙伴&#xff0c;中国人在安哥拉也是非常受欢迎的&#xff0c;虽然安哥拉经济比较落后&#xff0c;但是市场潜力还是非常不错的。今天就来给大家分享一下安哥拉的…...

第六章 :Spring Boot web开发常用注解(一)

第六章 &#xff1a;Spring Boot web开发常用注解&#xff08;一&#xff09; 前言 本章节知识重点&#xff1a;作者结合自身开发经验&#xff0c;以及觉察到的一个现象&#xff1a;Springboot注解全面理解和掌握的并不多&#xff0c;对注解进行了全面总结&#xff0c;共分两个…...

Unity DOTS系列之System中如何使用SystemAPI.Query迭代数据

最近DOTS发布了正式的版本, 我们来分享一下System中如何基于SystemAPI.Query来迭代World中的数据&#xff0c;方便大家上手学习掌握Unity DOTS开发。 SystemAPI.Query的使用 System有两种&#xff0c;一种是Unmanaged 的ISystem,一种是managed 的SystemBase,这两种System都可…...

【objectarx.net】创建渐变填充

net.gradientHatch(创建渐变填充)...

【软考】信息安全基本要素

目录 一、机密性二、完整性三、可用性四、可控性五、可审查性六、可鉴别性七、不可抵赖性八、可靠性 一、机密性 1.保证信息不泄露给未经授权的进程或实体&#xff0c;只供授权者使用 二、完整性 1.信息只能被得到允许的人修改&#xff0c;并且能够被判别该信息是否已被篡改过…...

[C++ ]:7.内存管理+模板引入。

内存管理模板引入 一.内存管理&#xff1a;1.内存区域划分图&#xff1a;2.区域划分实例&#xff1a;3.C 内存管理方式&#xff1a;newdelete4.自定义类型的new和delete&#xff1a;一.简单类&#xff1a;二.日期类&#xff1a;三.栈类&#xff1a;四.队列类&#xff08;栈实现…...

【计算机网络】HTTPS

文章目录 前言为什么会出现 HTTPSHTTPS 是如何进行加密的1. 对称加密非对称加密中间人攻击3. 引入证书 前言 前面我们学习了应用层中使用比较常见的 HTTP 协议&#xff0c;但是呢&#xff1f;在实际的使用中&#xff0c;浏览器和服务器之间的通信其实很少使用到 HTTP&#xff…...

阿里云服务器怎么样?阿里云服务器优势、价格及常见问题介绍

阿里云&#xff08;Alibaba Cloud&#xff09;是阿里巴巴集团旗下的云计算服务提供商&#xff0c;其提供的云服务器&#xff08;ECS&#xff09;是其核心服务之一。在云计算市场中&#xff0c;阿里云服务器备受用户的青睐&#xff0c;那么&#xff0c;阿里云服务器究竟怎么样呢…...

【狂神说Java】Dubbo + Zookeeper

✅作者简介&#xff1a;CSDN内容合伙人、信息安全专业在校大学生&#x1f3c6; &#x1f525;系列专栏 &#xff1a;狂神说Java &#x1f4c3;新人博主 &#xff1a;欢迎点赞收藏关注&#xff0c;会回访&#xff01; &#x1f4ac;舞台再大&#xff0c;你不上台&#xff0c;永远…...

Pytorch实战教程(三)-构建神经网络

0. 前言 我们已经学习了如何从零开始构建神经网络,神经网络通常包括输入层、隐藏层、输出层、激活函数、损失函数和学习率等基本组件。在本节中,我们将学习如何在简单数据集上使用 PyTorch 构建神经网络,利用张量对象操作和梯度值计算更新网络权重。 1. PyTorch 构建神经网…...

简单处理一下挖矿进程

接收服务器异常报警短信,进入服务器查看进程,显示cpu高占率的进程, $ top -c PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND …...

ES6学习笔记

数据类型&#xff1a;Number, String, Boolean, array , tuple&#xff0c;enum&#xff0c;any&#xff0c;Null, Undefined, Object, void&#xff0c; never 扩展运算符... 数据结构&#xff1a;Array, Set, Map 装饰器是一种函数&#xff0c;写成 函数名 类的装饰&…...

U-Mail邮箱系统,政务邮箱国产化改造优质之选

近年来&#xff0c;我国电子政务进入了全面铺开快速发展的阶段&#xff0c;政府机构的信息化管理能力也大幅提升。但是&#xff0c;随着国际形势的新变化&#xff0c;国家主管部门陆续出台相关政策&#xff0c;全面指导并要求政府机构落实国产化信息技术建设。因此&#xff0c;…...

C++ 数组学习资料

C 数组学习资料 目录 什么是数组&#xff1f;声明和初始化数组访问数组元素多维数组数组和指针常见的数组操作数组的限制和注意事项 什么是数组&#xff1f; 在 C 中&#xff0c;数组是一种用于存储相同类型元素的数据结构。它是一个固定大小的连续内存块&#xff0c;每个元…...

LabVIEW在OPC中使用基金会现场总线

LabVIEW在OPC中使用基金会现场总线 本文讨论了如何使用开放的OPC&#xff08;用于过程控制的OLE&#xff09;接口访问基金会现场总线网络和设备。 NI-FBUS通信管理器随附了一个OPC数据访问服务器。 &#xff08;NI-FBUS Configurator自动包含NI-FBUS通信管理器。&#xff09…...

京东数据分析:2023年Q3户外鞋服市场分析报告(冲锋衣行业销售数据分析)

从露营、骑行、徒步、桨板、垂钓、飞盘、滑雪到如今的city walk&#xff0c;近两年户外运动已经成为了年轻人新的生活方式。户外运动的爆发也刺激了人们对于鞋服在穿搭、场景化、专业性功能等方向的需求&#xff0c;户外鞋服市场迎来增长。 而全国性的降温则带给目前的户外鞋服…...

使用Pytorch的一些小细节(一)

文章目录 前言数据结构-张量max函数索引函数赋值函数拼接函数 前言 由于不经常动手写代码&#xff0c;所以对于python语言中的常见数据结构的用法也不是很熟悉&#xff0c;对于pytorch中的数据结构就更加不熟悉了。之前的代码基础是基于C语言的&#xff0c;属性都是自己定义&a…...

Cesium1.95中高性能加载1500个点

一、基本方式&#xff1a; 图标使用.png比.svg性能要好 <template><div id"cesiumContainer"></div><div class"toolbar"><button id"resetButton">重新生成点</button><span id"countDisplay&qu…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

macOS多出来了:Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用

文章目录 问题现象问题原因解决办法 问题现象 macOS启动台&#xff08;Launchpad&#xff09;多出来了&#xff1a;Google云端硬盘、YouTube、表格、幻灯片、Gmail、Google文档等应用。 问题原因 很明显&#xff0c;都是Google家的办公全家桶。这些应用并不是通过独立安装的…...

对WWDC 2025 Keynote 内容的预测

借助我们以往对苹果公司发展路径的深入研究经验&#xff0c;以及大语言模型的分析能力&#xff0c;我们系统梳理了多年来苹果 WWDC 主题演讲的规律。在 WWDC 2025 即将揭幕之际&#xff0c;我们让 ChatGPT 对今年的 Keynote 内容进行了一个初步预测&#xff0c;聊作存档。等到明…...

GC1808高性能24位立体声音频ADC芯片解析

1. 芯片概述 GC1808是一款24位立体声音频模数转换器&#xff08;ADC&#xff09;&#xff0c;支持8kHz~96kHz采样率&#xff0c;集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器&#xff0c;适用于高保真音频采集场景。 2. 核心特性 高精度&#xff1a;24位分辨率&#xff0c…...

逻辑回归暴力训练预测金融欺诈

简述 「使用逻辑回归暴力预测金融欺诈&#xff0c;并不断增加特征维度持续测试」的做法&#xff0c;体现了一种逐步建模与迭代验证的实验思路&#xff0c;在金融欺诈检测中非常有价值&#xff0c;本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...

LLaMA-Factory 微调 Qwen2-VL 进行人脸情感识别(二)

在上一篇文章中,我们详细介绍了如何使用LLaMA-Factory框架对Qwen2-VL大模型进行微调,以实现人脸情感识别的功能。本篇文章将聚焦于微调完成后,如何调用这个模型进行人脸情感识别的具体代码实现,包括详细的步骤和注释。 模型调用步骤 环境准备:确保安装了必要的Python库。…...

消防一体化安全管控平台:构建消防“一张图”和APP统一管理

在城市的某个角落&#xff0c;一场突如其来的火灾打破了平静。熊熊烈火迅速蔓延&#xff0c;滚滚浓烟弥漫开来&#xff0c;周围群众的生命财产安全受到严重威胁。就在这千钧一发之际&#xff0c;消防救援队伍迅速行动&#xff0c;而豪越科技消防一体化安全管控平台构建的消防“…...

Java详解LeetCode 热题 100(26):LeetCode 142. 环形链表 II(Linked List Cycle II)详解

文章目录 1. 题目描述1.1 链表节点定义 2. 理解题目2.1 问题可视化2.2 核心挑战 3. 解法一&#xff1a;HashSet 标记访问法3.1 算法思路3.2 Java代码实现3.3 详细执行过程演示3.4 执行结果示例3.5 复杂度分析3.6 优缺点分析 4. 解法二&#xff1a;Floyd 快慢指针法&#xff08;…...

JDK 17 序列化是怎么回事

如何序列化&#xff1f;其实很简单&#xff0c;就是根据每个类型&#xff0c;用工厂类调用。逐个完成。 没什么漂亮的代码&#xff0c;只有有效、稳定的代码。 代码中调用toJson toJson 代码 mapper.writeValueAsString ObjectMapper DefaultSerializerProvider 一堆实…...