vue项目导入 .xlsx 文件

直接上代码,简单示例:

        点击导入按钮,弹出导入弹窗;

template 部分的代码:

<div><el-buttonclass="filter-item"style="margin-left: 10px; margin-bottom: 20px; height: 30px"type="primary"@click="importFile()">导入调整下达表</el-button>
</div>
<el-dialog:title="title":visible.sync="dialogVisible"width="40%":before-close="importClose"
><div style="display: flex; align-items: center"><aherf="javaScript:;"style="font-weight: bold;color: #d89a54;margin-right: 10px;margin-bottom: 18px;font-size: 16px;"@click="downloadModel()">【模版下载】</a></div><div><el-form style="display: flex; align-items: center"><el-form-itemlabel="导入年份"label-width="88px"class="importYearSty"><el-date-pickerv-model="importYear"value-format="yyyy"clearabletype="year"/></el-form-item><el-form-item label="导入月份" label-width="88px"><el-selectv-model="importMonth"placeholder="请选择"style="width: 140px"clearable><el-option label="一月" value="一月"></el-option><el-option label="二月" value="二月"></el-option><el-option label="三月" value="三月"></el-option><el-option label="四月" value="四月"></el-option><el-option label="五月" value="五月"></el-option><el-option label="六月" value="六月"></el-option><el-option label="七月" value="七月"></el-option><el-option label="八月" value="八月"></el-option><el-option label="九月" value="九月"></el-option><el-option label="十月" value="十月"></el-option><el-option label="十一月" value="十一月"></el-option><el-option label="十二月" value="十二月"></el-option></el-select></el-form-item></el-form></div><br /><br /><div style="margin: 30px; padding-left: 100px; box-sizing: box-sizing"><el-uploadref="upload"action="#":limit="1"class="upload-demo"drag:on-change="handleChange":accept="accept":multiple="false":auto-upload="false"><i class="el-icon-upload" /><div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div><div slot="tip" class="el-upload__tip">只能上传excel文件,且不超过100M</div></el-upload></div><span slot="footer" class="dialog-footer"><el-button @click="dialogVisible = false">取 消</el-button><el-button type="primary" @click="subMit">提交</el-button></span>
</el-dialog>

data 部分的代码:

data() {return {// 导入excel文件配置fileMIMEList: ['application/vnd.ms-excel','application/vnd.openxmlformats-officedocument.spreadsheetml.sheet',''],// 可导入文件类型accept: '.xls,.xlsx',// 弹窗标题title: '导入文件',// 弹窗是否展示,默认不展示dialogVisible: false,file:null,// 导入数据的月份importMonth: '',// 导入年份,默认当前年份importYear: new Date().getFullYear().toString()}
}

引入的js:

import { getDiaLog } from '@/api/ims-demo/scProjInfo'; // 获取模板的方法
import axios from 'axios';
import { getCookieCode, getCookieToken } from '@/utils/auth'; // 获取token和code

methods 部分的代码:

// 点击导入按钮
importFile() {if (this.$refs.upload) {this.$refs.upload.uploadFiles = []}this.file = nullthis.dialogVisible = truethis.title = '上传文件'
},
// 弹窗关闭按钮
importClose() {this.dialogVisible = false
},
// 模板下载按钮
downloadModel() {let modelKey = 'xxhsjdzbhxmxdb'getDiaLog(modelKey).then((res) => {const downloadbtn = document.createElement('a')const url =process.env.VUE_APP_BASE_IMS_EXT +'f-center/hadoop/hdfs/download?path=' + resdownloadbtn.setAttribute('href', url)downloadbtn.style.display = 'none'document.body.appendChild(downloadbtn)downloadbtn.click()document.body.removeChild(downloadbtn)})
},
// 导入成功时执行
async handleChange(file) {if(!this.fileMIMEList.includes(file.raw.type)) {this.$message.error(`请上传 ${this.accept} 的文件!`)return false}const data = await this.readFile(file.raw)const workbook = XLSX.read(data, {type: 'binary',cellDates: true}) // 解析二进制格式数据const worksheet = workbook.Sheets[workbook.SheetNames[0]] // 获取第一个Sheetconst result = XLSX.utils.sheet_to_json(worksheet) // json数据格式this.file = result
},
readFile(file) {// 文件读取return new Promise((resolve) => {const reader = new FileReader()reader.readAsBinaryString(file) // 以二进制的方式读取reader.onload = (ev) => {resolve(ev.target.result)}})
},
// 提交按钮
subMit() {let month = 1switch (this.importMonth) {case '一月':month = 1breakcase '二月':month = 2breakcase '三月':month = 3breakcase '四月':month = 4breakcase '五月':month = 5breakcase '六月':month = 6breakcase '七月':month = 7breakcase '八月':month = 8breakcase '九月':month = 9breakcase '十月':month = 10breakcase '十一月':month = 11breakcase '十二月':month = 12break}const FormDatas = new FormData()FormDatas.append('excelData', JSON.stringify(this.file))FormDatas.append('timeScope', String(month))FormDatas.append('year', String(this.importYear))// importExcelData(this.file, this.activeTagName, new Date().getFullYear())// 根据自己的项目如何调用接口决定,也可在 vueX 中获取登录保存的token和code// getCookieToken 获取token,getCookieCode 获取codeaxios({method: 'post',url: process.env.VUE_APP_BASE_IMS_BUSINESS +'sm-scxxh/scProjInfo/importCommitExcelData',headers: {'Blade-Auth': getCookieToken(),code: getCookieCode(),'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},timeout: 1000000,data: FormDatas}).then((response) => {if(response.data.code == 200) {this.$message({title: '成功',message: response.data.msg,type: 'success',duration: 2000})this.dialogVisible = false// 导入完成,重新调取列表接口,重新渲染表格this.getList()} else {this.$message({title: '失败',message: response.data.msg,type: 'warning',duration: 2000})this.dialogVisible = false}})
},

有问题请留言。

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

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

相关文章

ARM-V9 RME(Realm Management Extension)系统架构之功耗管理

安全之安全(security)博客目录导读 目录 一、系统功耗管理 1、功耗状态 2、PE功耗管理 3、系统和PE集群功耗管理 4、系统功耗状态 二、RME组件功耗管理 本节规定了RME系统的功耗管理规则。 功耗管理流程定义了系统及其组件如何在各种电源状态之间进行转换&#xff0c;以…

深度学习中的神经网络——揭秘人工智能的核心技术

在当今科技领域&#xff0c;人工智能&#xff08;Artificial Intelligence&#xff0c;简称AI&#xff09;无疑是最热门的话题之一。而作为人工智能领域的核心技术&#xff0c;神经网络&#xff08;Neural Networks&#xff09;正逐渐改变着我们的生活&#xff0c;并在诸如图像…

论文研读|以真实图像为参考依据的AIGC检测

前言&#xff1a;这篇文章介绍几篇AIGC检测的相关工作&#xff0c;其中前几篇文章是以真实图像的特征作为标准进行检测&#xff0c;最后一篇文章就当拓展一下知识边界吧&#xff5e; 目录 Detecting Generated Images by Real Images Only (202311 arXiv)Let Real Images be as…

深入解析Web通信 HTTP、HTTPS 和 WebSocket

在现代Web开发中,了解和掌握HTTP、HTTPS以及WebSocket协议是非常重要的。这些协议是实现Web应用程序之间通信的基石。本文将详细介绍这三种协议,包括它们的基本概念、工作原理、优缺点以及适用场景。通过深入解析它们的特点和应用,帮助读者更好地理解和使用这些协议。 一、…

【Chrome插件】如何在Chrome插件开发中处理复杂数据结构的存储

最近俺在接触 Chrome 插件开发&#xff0c;需要把一个数据存放到浏览器的存储中。这个数据结构有点复杂&#xff0c;它包含一个 Map 和一个数组。我使用 chrome.storage.local API来存储这个数据&#xff0c;然后在另一个地方获取数据。保存数据的代码并没有报错&#xff0c;但…

代码随想录算法训练营第37天|● 56.合并区间● 738.单调递增的数字

合并区间 56. 合并区间 - 力扣&#xff08;LeetCode&#xff09; 按照左边界从小到大排序之后&#xff0c;如果 intervals[i][0] < intervals[i - 1][1] 即intervals[i]的左边界 < intervals[i - 1]的右边界&#xff0c;则一定有重叠。&#xff08;本题相邻区间也算重贴…

SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件

SpringBoot整合H2数据库并将其打包成jar包、转换成exe文件 H2 是一个用 Java 开发的嵌入式数据库&#xff0c;它的主要特性使其成为嵌入式应用程序的理想选择。H2 仅是一个类库&#xff0c;可以直接嵌入到应用项目中&#xff0c;而无需独立安装客户端和服务器端。 常用开源数…

网页自动化工具入门篇之常用自动化工具

1. Selenium 优点: 功能强大&#xff0c;可以与几乎所有的现代浏览器配合使用。支持多种编程语言&#xff08;如Python, Java, C#, Ruby等&#xff09;。能够处理复杂的网页交互&#xff0c;包括按钮点击、表单填写、拖拽操作等。 缺点: 相对较慢&#xff0c;因为它是真正启动…

Linux Debian12使用podman安装pikachu靶场环境

一、pikachu简介 Pikachu是一个带有漏洞的Web应用系统&#xff0c;在这里包含了常见的web安全漏洞。 二、安装podman环境 Linux Debian系统如果没有安装podman容器环境&#xff0c;可以参考这篇文章先安装podman环境&#xff0c; Linux Debian11使用国内源安装Podman环境 三…

【Numpy】一文向您详细介绍 np.trunc()

【Numpy】一文向您详细介绍 np.trunc() 下滑即可查看博客内容 &#x1f308; 欢迎莅临我的个人主页 &#x1f448;这里是我静心耕耘深度学习领域、真诚分享知识与智慧的小天地&#xff01;&#x1f387; &#x1f393; 博主简介&#xff1a;985高校的普通本硕&#xff0c;…

[数据集][目标检测]中国象棋检测数据集VOC+YOLO格式300张12类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;300 标注数量(xml文件个数)&#xff1a;300 标注数量(txt文件个数)&#xff1a;300 标注类别…

Django后台忘记管理员的账号

使用命令启动项目&#xff1a; python manage.py runserver输入后缀/admin&#xff0c;进入后台管理员&#xff0c;如果此时忘记你先前设置的用户名与密码怎么办&#xff1f; 终端输入&#xff1a; python manage.py shell 输入以下内容&#xff0c;并查看返回结果&#xff…

用【R语言】揭示大学生恋爱心理:【机器学习】与【深度学习】的案例深度解析

目录 第一部分&#xff1a;数据收集与预处理 1.1 数据来源 1.2 数据清洗 1.3 数据探索性分析 第二部分&#xff1a;特征工程与数据准备 2.1 特征选择 2.2 特征提取 第三部分&#xff1a;机器学习模型 3.1 逻辑回归模型 3.2 决策树模型 第四部分&#xff1a;深度学习…

spark MLlib (DataFrame-based) 中的聚类算法Bisecting K-Means、K-Means、Gaussian Mixture

Bisecting K-Means 核心原理&#xff1a; Bisecting K-Means 是一种层次 K-Means 聚类算法&#xff0c;基于 Steinbach、Karypis 和 Kumar 的论文《A comparison of document clustering techniques》&#xff0c;并对 Spark 环境进行了修改和适应。 该算法通过递归地将数据集…

ui自动化中,隐式等待和显示等待什么时候使用

隐式等待 在页面刷新加载时&#xff0c;页面元素还没有出来&#xff0c;这个时候如果去找元素就会找不到报错 或者点了一个菜单&#xff0c;页面加载时 用笨办法&#xff0c;就是用sleep等待固定的时间&#xff0c;这种浪费的时间比较多&#xff0c;就可以用隐式等待&#xf…

cocos入门11:生命周期

Cocos Creator 是一个强大的游戏开发工具&#xff0c;它基于 JavaScript 或 TypeScript&#xff0c;并使用 cc.Class 系统来组织游戏逻辑。在 Cocos Creator 中&#xff0c;每个组件&#xff08;包括场景、节点和组件脚本&#xff09;都有其生命周期&#xff0c;这些生命周期函…

美业门店管理系统Java源码分享-【库存管理】的功能和作用

美业收银系统在美容行业中的作用和重要性体现在提高管理效率、提升客户满意度、降低成本、促进业务增长等方面。它为连锁美业提供了一个全面的管理工具&#xff0c;能够更好地应对市场挑战&#xff0c;提升竞争力。 美业系统中的【库存管理】在整个美容行业中起着非常重要的作…

深入理解ChatGPT工作原理

在人工智能领域&#xff0c;自然语言处理&#xff08;NLP&#xff09;技术的飞速发展让机器能够更加自然和人类进行交流。OpenAI的ChatGPT作为当前最受关注的NLP模型之一&#xff0c;其出色的对话能力引起了业界和学术界的广泛关注。本文将深入探讨ChatGPT的工作原理&#xff0…

【SpringCloud学习笔记】RabbitMQ(中)

1. 交换机概述 前面《RabbitMQ上篇》我们使用SpringAMQP来演示如何用Java代码操作RabbitMQ&#xff0c;当时采用的是生产者直接将消息发布给队列&#xff0c;但是实际开发中不建议这么多&#xff0c;更加推荐生产者将消息发布到交换机(exchange)&#xff0c;然后由exchange路由…