vue做导入导出excel文档

系统中经常会遇到要实现批量导入/导出数据的功能,导入就需要先下载一个模板,然后在模板文件中填写内容,最后导入模板,导出就可能是下载一个excel文件。

1、导出

新建一个export.js文件如下:

import {MessageBox,Message,Notification
} from 'element-ui'
import axios from 'axios'
// 导出
export function outExcel(name, url, data, info) {const that = this;MessageBox.confirm(name, "提示", {type: "warning"}).then(async () => {Notification.info({title: '提示',message: '正在导出,请稍后 <i class="el-icon-loading" style="font-size:20px"></i>',dangerouslyUseHTMLString: true,position: 'bottom-left',duration: 0})const time = data;let formData = new FormData();if (time != null) {for (var p in time) {formData.append(p, time[p]);}}axios({method: "post",url: process.env.VUE_APP_BASE_API + url,data: formData,headers: {Authorization: "token " + 'XXX'.,"Content-Type": "multipart/form-data"},responseType: "blob"}).then(data => {if (data.data.type === "application/json") {var reader = new FileReader();reader.onloadend = function () {let res = JSON.parse(reader.result);if (res && res.msg) {Message.warning(res.msg + "," + res.data);setTimeout(() => {Notification.closeAll()}, 1000);}};reader.readAsText(data.data);return;}let url = window.URL.createObjectURL(new Blob([data.data]));let link = document.createElement("a");link.style.display = "none";link.href = url;link.setAttribute("download", info);document.body.appendChild(link);link.click();if (info.indexOf('模板') !== -1) {Message.success('模板下载成功')setTimeout(() => {Notification.closeAll()}, 1000);} else {Notification.closeAll()Notification.success({title: '提示',message: '导出成功',position: 'bottom-left',duration: 2000})setTimeout(() => {Notification.closeAll()}, 2000);}}).catch(data => {if (info.indexOf('模板') !== -1) {Message.error('模板下载失败')} else {Message.error('导出失败')}});}).catch(() => {return false;});
}

可接收参数有: name(提示语),url(接口路径),data(接口参数),info(文件名)

需要将传入的 data 对象转换为 FormData 对象,用于发送POST请求的数据,同时设置请求头包括Authorization信息和Content-Typemultipart/form-data,以及指定响应类型为blob。请求成功的回调函数,判断响应的数据类型,如果是JSON格式,则使用FileReader来读取文件内容,解析其中的消息并显示警告信息,然后关闭所有通知,并返回。如果不是JSON格式,则将响应的数据转换为URL创建一个隐藏的链接并设置下载属性,然后模拟点击下载

使用时先引入文件中的方法直接调用

exportTemplate () {outExcel('请确认是否需要下载信息模板',"user/downloadExample",{},"人员信息模板.xls");
},

在这里插入图片描述

2、导入

使用el-upload组件,参数有: action(必选参数,上传的地址),headers(设置上传的请求头部),multiple(是否支持多选文件),data(附带的额外参数),name(文件字段名),file-list(上传的文件列表),limit(最大允许上传个数),详情参考Element官方文档。

<template><div><el-upload style="display: inline-block; margin: 0 10px" ref="upload" :show-file-list='false' :headers="headers" :action="action" :on-success="handleSuccess" :on-error="hadleError" :limit="1" :file-list="fileList"><el-button type="primary"><img class="img" src="@/assets/image/xinxi2.png" alt="">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;导入</el-button></el-upload></div>
</template><script>
export default {data () {return {fileList: [],action:process.env.VUE_APP_BASE_API + "user/importData",headers: {Authorization:"token " + 'XXX'},}},methods: {// 上传成功handleSuccess (response, file, fileList) {this.$refs.upload.clearFiles();if (fileList[0].response.code === 1) {this.fileList = [];this.$message.success("上传成功!!!");} else {this.fileList = [];this.$message.error(fileList[0].response.msg);}},// 上传失败hadleError (err, file, fileList) {console.log(error)this.$refs.upload.clearFiles();this.fileList = [];const result = JSON.parse(error.message);this.$message.error(result.msg);},}
}
</script>

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

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

相关文章

文件摆渡:安全、高效的摆渡系统助力提升效率

很多组织和企业都会通过网络隔离的方式来保护内部的数据&#xff0c;网络隔离可以是物理隔离&#xff0c;也可以是逻辑隔离&#xff0c;如使用防火墙、VPN、DMZ等技术手段来实现&#xff0c;隔离之后还会去寻找文件摆渡方式&#xff0c;来保障日常的业务和经营需求。 进行网络隔…

线上社交app的搭建,圈子社交系统,小程序+app+H5三端,源码交付,支持二开!

在科技飞速发展的大背景下&#xff0c;年轻人社交不再局限于面对面&#xff0c;线上社交app已深入各大年轻人的手机中。相比于传统交友方式&#xff0c;线上社交app为用户提供了更加新奇的交友体验。同时&#xff0c;它还可以吸引更多的朋友&#xff0c;提高用户的整体交友体验…

Spring Boot整合Redisson的两种方式

项目场景 Spring Boot整合Redisson的两种方式&#xff0c;方式一直接使用yml配置&#xff0c;方式二创建RedissonConfig配置类。 前言 redisson和redis区别&#xff1a; Redis是一个开源的内存数据库&#xff0c;支持多种数据类型&#xff0c;如字符串、哈希、列表、集合和有序…

python-pytorch 如何使用python库Netron查看模型结构(以pytorch官网模型为例)0.9.2

Netron查看模型结构 参照模型安装Netron写netron代码运行查看结果需要关注的地方 2024年4月27日14:32:30----0.9.2 参照模型 以pytorch官网的tutorial为观察对象&#xff0c;链接是https://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.html 模型代…

数码摄影色彩构成,数码相机色彩管理

一、资料描述 本套摄影色彩资料&#xff0c;大小58.54M&#xff0c;共有6个文件。 二、资料目录 《抽象彩色摄影集》.阿瑟.pdf 《色彩构成》.pdf 《色彩学》.星云.扫描版.pdf 《摄影色彩构成》.pdf 《数码相机色彩管理》.pdf 数码摄影进阶之4《色彩篇》.pdf 三、资料下…

Qt 把.exe打包成安装文件形式

目录 1.下载工具 Qt Installer Framework2.将bin文件添加到环境变量3.拷贝startmenu示例-备用4.准备Qt Release打包好的程序5.把Release打包好的程序放到packages\org.qtproject.ifw.example\data文件夹下6.生成安装包7.修改安装包图标8.修改主程序程序安装引导-创建快捷键9.添…

FFmpeg下载教程(Windows版)

文章目录 下载地址步骤 下载地址 https://ffmpeg.org/download.html 步骤

win c++使用lua环境配置 5.3.5版本

编译lua 下载lua源码&#xff0c;github仓库 使用vs编译源码&#xff0c;新建一个静态库项目(只会生成lib文件)&#xff0c;想要dll的话就新建dll项目&#xff08;有一个lib文件和dll文件&#xff09; 把lua源码下面的文件夹都是&#xff0c;复制到vs项目中 lib目录是我手动…

iOS - 多线程-读写安全

文章目录 iOS - 多线程-读写安全1. 多读单写1.1 场景1.2 实现方案1.2.1 pthread_rwlock&#xff1a;读写锁1.2.1.1 示例 1.2.2 dispatch_barrier_async&#xff1a;异步栅栏调用1.2.2.1 示例 iOS - 多线程-读写安全 假设有一个文件&#xff0c;A线程进行读取操作&#xff0c;B…

牛客社区帖子分页显示实现

下图是前端分页的组件&#xff1a; 下面是对应的静态html页面&#xff0c;每一个方块&#xff0c;都是一个a标签&#xff0c;可以点击&#xff0c;执行的链接是/community/index&#xff0c;GET请求&#xff0c;拼接的参数是current&#xff0c;也就是pageNum&#xff0c;只需…

ACE框架学习3

ACE Acceptor-Connector框架 该框架实现 Acceptor-Connector 模式&#xff0c;该模式解除了“网络化应用中的协作对端服务的连接和初始化”与“连接和初始化之后它们所执行的处理”的耦合。Acceptor-Connector 框架允许成用独立于它们所提供的服务来配置其连接布局的关键属性。…

【idea】idea 中 git 分支多个提交合并一个提交到新的分支

一、方法原理讲解 我们在 dev 分支对不同的代码文件做了多次提交。现在我们想要把这些提交都合并到 test 分支。首先我们要明白四个 git 操作&#xff0c; commit&#xff1a;命令用于将你的代码变更保存到本地代码仓库中&#xff0c;它创建了一个新的提交&#xff08;commit…

ubuntu 复制文件路径

前言 我打算搞一个ubuntu右键复制文件路径的插件&#xff0c;但是找不到&#xff0c;只能平替 这个配置&#xff0c;可以把文件拖拽到cmd窗口&#xff0c;然后就直接cmd输出文件路径 配置 cd ~ vim .bashrc 在文件结尾添加 cdd () { ddirname "$1"; echo …

通过filebeat实现对docker服务的通用日志收集

平台 依赖 linux docker docker-compose 或者 docker compose 镜像 docker.elastic.co/beats/filebeat:8.12.2 docker.elastic.co/beats/kibana:8.12.2 docker.elastic.co/beats/elasticsearch:8.12.2 正文 背景 对于有自建机房的公司来说&#xff0c;如果公司的运维技术…

应用实战 | 别踩白块小游戏,邀请大家来PK挑战~

“踩白块会输”是一个简单的微信小程序游戏&#xff0c;灵感来自当年火热的别踩白块游戏&#xff0c;程序内分成三个模块&#xff1a;手残模式、经典模式和极速模式&#xff0c;分别对应由易到难的三种玩法&#xff0c;可以查看游戏排名。动画效果采用JS实现&#xff0c;小程序…

opencv可视化图片-----c++

可视化图片 #include <opencv2/opencv.hpp> #include <opencv2/core.hpp> #include <filesystem>// 将数据类型转换为字符串 std::string opencvTool::type2str(int type) {std::string r;uchar depth type & CV_MAT_DEPTH_MASK;uchar chans 1 (typ…

java开发之路——用户管理中心_简单初始化

用户管理中心_简单初始化 (一) 初始化项目1. 使用 Ant Design Pro(现成的管理系统) 进行前端初始化2. 后端初始化三种初始化java项目 (二) 遇到的问题【问题1】Ant design pro页面打不开&#xff0c;一直在budiling控制台出现错误error-./src/components/index.ts【问题2】初始…

数据结构和算法:贪心

贪心算法 贪心算法是一种常见的解决优化问题的算法&#xff0c;其基本思想是在问题的每个决策阶段&#xff0c;都选择当前看起来最优的选择&#xff0c;即贪心地做出局部最优的决策&#xff0c;以期获得全局最优解。 贪心算法和动态规划都常用于解决优化问题。它们之间存在一…

51.HarmonyOS鸿蒙系统 App(ArkUI)通知

普通文本通知测试 长文本通知测试 多行文本通知测试 图片通知测试 进度条通知测试 通知简介 应用可以通过通知接口发送通知消息&#xff0c;终端用户可以通过通知栏查看通知内容&#xff0c;也可以点击通知来打开应用。 通知常见的使用场景&#xff1a; 显示接收到的短消息、…

GPT-3.5 Turbo 的 temperature 设置为 0 就是贪婪解码?

&#x1f349; CSDN 叶庭云&#xff1a;https://yetingyun.blog.csdn.net/ 将 GPT-3.5 Turbo 的 temperature 设置为 0 通常意味着采用贪婪解码&#xff08;greedy decoding&#xff09;策略。在贪婪解码中&#xff0c;模型在每一步生成文本时选择概率最高的词元&#xff0c;从…