当前位置: 首页 > 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);},

http://www.lryc.cn/news/225812.html

相关文章:

  • 莫桑比克市场开发攻略,收藏一篇就够了
  • go语言学习
  • 安哥拉市场开发攻略,收藏一篇就够了
  • 第六章 :Spring Boot web开发常用注解(一)
  • Unity DOTS系列之System中如何使用SystemAPI.Query迭代数据
  • 【objectarx.net】创建渐变填充
  • 【软考】信息安全基本要素
  • [C++ ]:7.内存管理+模板引入。
  • 【计算机网络】HTTPS
  • 阿里云服务器怎么样?阿里云服务器优势、价格及常见问题介绍
  • 【狂神说Java】Dubbo + Zookeeper
  • Pytorch实战教程(三)-构建神经网络
  • 简单处理一下挖矿进程
  • ES6学习笔记
  • U-Mail邮箱系统,政务邮箱国产化改造优质之选
  • C++ 数组学习资料
  • LabVIEW在OPC中使用基金会现场总线
  • 京东数据分析:2023年Q3户外鞋服市场分析报告(冲锋衣行业销售数据分析)
  • 使用Pytorch的一些小细节(一)
  • PDF Expert for mac(专业pdf编辑器)苹果电脑
  • 班级新闻管理系统asp.net+sqlserver
  • navicat导入.sql文件出现:[ERR] 1067 - Invalid default value for ‘create_date‘
  • Labview利用声卡捕获波形
  • ElasticSearch7.x - HTTP 操作 - 索引操作
  • Banana Pi BPI-M6(Raspberry Pi 5 替代品)初始设置及固件烧录
  • Ubuntu18.04.6安装qt5.7.1(超级详细教程)
  • 进程线程
  • 【ubuntu 快速熟悉】
  • 全局异常处理器(黑马程序员)
  • 虹科示波器 | 汽车免拆检测 | 2017款路虎发现车行驶中发动机抖动且加速无力