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(…...
莫桑比克市场开发攻略,收藏一篇就够了
中国与莫桑比克之间的经贸关系源远流长,两国之间的贸易和投资合作呈现出快速增长的趋势。莫桑比克是农业国,生产以及生活资料依赖进口,市场潜力还是非常不错的,今天就给大家分享一下。文章略长,大家点赞收藏关注慢慢看…...
go语言学习
1、示例代码: imgName : g.Cfg().MustGet(ctx, "migrate.img-arm-rbd").String() 在给定的代码行中,g.Cfg() 是一个函数调用,它返回一个配置对象。MustGet(ctx, "migrate.img-arm-rbd") 则是在这个配置对象上调用的方法…...
安哥拉市场开发攻略,收藏一篇就够了
安哥拉是非洲南部的一个国家,中国是安哥拉最大的贸易伙伴,安哥拉是中国在非洲的第二大贸易伙伴,中国人在安哥拉也是非常受欢迎的,虽然安哥拉经济比较落后,但是市场潜力还是非常不错的。今天就来给大家分享一下安哥拉的…...
第六章 :Spring Boot web开发常用注解(一)
第六章 :Spring Boot web开发常用注解(一) 前言 本章节知识重点:作者结合自身开发经验,以及觉察到的一个现象:Springboot注解全面理解和掌握的并不多,对注解进行了全面总结,共分两个…...
Unity DOTS系列之System中如何使用SystemAPI.Query迭代数据
最近DOTS发布了正式的版本, 我们来分享一下System中如何基于SystemAPI.Query来迭代World中的数据,方便大家上手学习掌握Unity DOTS开发。 SystemAPI.Query的使用 System有两种,一种是Unmanaged 的ISystem,一种是managed 的SystemBase,这两种System都可…...
【objectarx.net】创建渐变填充
net.gradientHatch(创建渐变填充)...
【软考】信息安全基本要素
目录 一、机密性二、完整性三、可用性四、可控性五、可审查性六、可鉴别性七、不可抵赖性八、可靠性 一、机密性 1.保证信息不泄露给未经授权的进程或实体,只供授权者使用 二、完整性 1.信息只能被得到允许的人修改,并且能够被判别该信息是否已被篡改过…...
[C++ ]:7.内存管理+模板引入。
内存管理模板引入 一.内存管理:1.内存区域划分图:2.区域划分实例:3.C 内存管理方式:newdelete4.自定义类型的new和delete:一.简单类:二.日期类:三.栈类:四.队列类(栈实现…...
【计算机网络】HTTPS
文章目录 前言为什么会出现 HTTPSHTTPS 是如何进行加密的1. 对称加密非对称加密中间人攻击3. 引入证书 前言 前面我们学习了应用层中使用比较常见的 HTTP 协议,但是呢?在实际的使用中,浏览器和服务器之间的通信其实很少使用到 HTTPÿ…...
阿里云服务器怎么样?阿里云服务器优势、价格及常见问题介绍
阿里云(Alibaba Cloud)是阿里巴巴集团旗下的云计算服务提供商,其提供的云服务器(ECS)是其核心服务之一。在云计算市场中,阿里云服务器备受用户的青睐,那么,阿里云服务器究竟怎么样呢…...
【狂神说Java】Dubbo + Zookeeper
✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :狂神说Java 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远…...
Pytorch实战教程(三)-构建神经网络
0. 前言 我们已经学习了如何从零开始构建神经网络,神经网络通常包括输入层、隐藏层、输出层、激活函数、损失函数和学习率等基本组件。在本节中,我们将学习如何在简单数据集上使用 PyTorch 构建神经网络,利用张量对象操作和梯度值计算更新网络权重。 1. PyTorch 构建神经网…...
简单处理一下挖矿进程
接收服务器异常报警短信,进入服务器查看进程,显示cpu高占率的进程, $ top -c PID USER PR NI VIRT RES SHR S %CPU %MEM TIME COMMAND …...
ES6学习笔记
数据类型:Number, String, Boolean, array , tuple,enum,any,Null, Undefined, Object, void, never 扩展运算符... 数据结构:Array, Set, Map 装饰器是一种函数,写成 函数名 类的装饰&…...
U-Mail邮箱系统,政务邮箱国产化改造优质之选
近年来,我国电子政务进入了全面铺开快速发展的阶段,政府机构的信息化管理能力也大幅提升。但是,随着国际形势的新变化,国家主管部门陆续出台相关政策,全面指导并要求政府机构落实国产化信息技术建设。因此,…...
C++ 数组学习资料
C 数组学习资料 目录 什么是数组?声明和初始化数组访问数组元素多维数组数组和指针常见的数组操作数组的限制和注意事项 什么是数组? 在 C 中,数组是一种用于存储相同类型元素的数据结构。它是一个固定大小的连续内存块,每个元…...
LabVIEW在OPC中使用基金会现场总线
LabVIEW在OPC中使用基金会现场总线 本文讨论了如何使用开放的OPC(用于过程控制的OLE)接口访问基金会现场总线网络和设备。 NI-FBUS通信管理器随附了一个OPC数据访问服务器。 (NI-FBUS Configurator自动包含NI-FBUS通信管理器。)…...
京东数据分析:2023年Q3户外鞋服市场分析报告(冲锋衣行业销售数据分析)
从露营、骑行、徒步、桨板、垂钓、飞盘、滑雪到如今的city walk,近两年户外运动已经成为了年轻人新的生活方式。户外运动的爆发也刺激了人们对于鞋服在穿搭、场景化、专业性功能等方向的需求,户外鞋服市场迎来增长。 而全国性的降温则带给目前的户外鞋服…...
使用Pytorch的一些小细节(一)
文章目录 前言数据结构-张量max函数索引函数赋值函数拼接函数 前言 由于不经常动手写代码,所以对于python语言中的常见数据结构的用法也不是很熟悉,对于pytorch中的数据结构就更加不熟悉了。之前的代码基础是基于C语言的,属性都是自己定义&a…...
如何快速解密QQ音乐加密音频:qmcdump完整使用指南
如何快速解密QQ音乐加密音频:qmcdump完整使用指南 【免费下载链接】qmcdump 一个简单的QQ音乐解码(qmcflac/qmc0/qmc3 转 flac/mp3),仅为个人学习参考用。 项目地址: https://gitcode.com/gh_mirrors/qm/qmcdump 你是否曾为…...
Step3-VL-10B模型C盘清理优化:智能存储管理工具开发
Step3-VL-10B模型C盘清理优化:智能存储管理工具开发 用AI技术解决C盘爆满的烦恼,让存储管理变得智能高效 1. 项目背景与需求 你是不是也经常遇到C盘飘红、系统卡顿的困扰?每次手动清理都不知道哪些文件能删、哪些不能动,生怕误删…...
用FLUENT验证ICEM网格质量:一个二维混合器流动传热仿真的完整案例复盘
从残差曲线到温度云图:FLUENT如何验证ICEM网格的工程适用性 在计算流体力学(CFD)项目中,网格质量往往决定着整个仿真过程的成败。许多工程师花费大量时间在ICEM中精心划分网格后,却对如何验证这些网格是否真正"合…...
BEYOND REALITY Z-Image效果实测:对比通用负面词,专用词让人脸合格率翻倍
BEYOND REALITY Z-Image效果实测:对比通用负面词,专用词让人脸合格率翻倍 1. 测试背景与目标 在AI图像生成领域,负面提示词(Negative Prompt)的质量往往决定了生成结果的可用性。BEYOND REALITY Z-Image作为一款专注于写实人像生成的模型&a…...
STM32CubeMX配置CRC避坑指南:Modbus/RTU校验从‘跑不通’到‘一次过’
STM32CubeMX配置CRC避坑指南:Modbus/RTU校验从‘跑不通’到‘一次过’ 当你第一次在Modbus/RTU通信中遇到CRC校验失败时,那种挫败感我深有体会。明明按照教程一步步配置了STM32的硬件CRC模块,生成的校验码却总是与标准测试向量对不上。这不是…...
第 29 课:任务页筛选方案预设与快捷视图
第 29 课:任务页筛选方案预设与快捷视图 这一课,我们继续沿着任务管理页主线往下走,把它从“能筛选”推进到“能复用工作台”: 让用户把当前筛选条件保存成方案,以后可以一键切回。 这一步很像真实后台系统里常见的&am…...
从‘文件不见了’到‘数据被覆盖’:新手用C语言fopen写文件常踩的5个坑及解决办法
从‘文件不见了’到‘数据被覆盖’:新手用C语言fopen写文件常踩的5个坑及解决办法 刚接触C语言文件操作时,很多人会惊讶于fopen()这个看似简单的函数竟能引发如此多诡异问题。我曾见过学生因为误用"w"模式导致实验数据全毁,也遇到…...
从QQ音乐API签名机制,聊聊前端反爬的常见套路与应对思路
从QQ音乐API签名机制看现代Web应用的前端反爬设计 最近在分析几个主流音乐平台的API接口时,发现QQ音乐的签名机制设计得相当巧妙。作为一个日活过亿的应用,其API防护策略确实有不少值得研究的地方。今天我们就以vKey和Sign的生成为切入点,聊聊…...
HTML图片怎么用Bitbucket Pipelines发布_Bitbucket自动构建HTML站点
Bitbucket Pipelines 不能直接托管 HTML 站点,仅支持构建后推送到 GitHub Pages、Netlify 或自有服务器;需配置 SSH 密钥权限,用 git push 到 gh-pages 分支或 rsync 部署,并注意资源路径与 base URL 适配。Bitbucket Pipelines 能…...
AEUX:颠覆性设计到动画工作流,从Sketch/Figma到After Effects的无缝转换
AEUX:颠覆性设计到动画工作流,从Sketch/Figma到After Effects的无缝转换 【免费下载链接】AEUX Editable After Effects layers from Sketch artboards 项目地址: https://gitcode.com/gh_mirrors/ae/AEUX 在当今设计动画一体化趋势下,…...
