vue3 批量导入、下载、批量导出
批量导入(带信息反馈):
<file @refresh="refresh">file>
组件:
<template> <div class="export-wrap"> <el-upload class="upload-demo" action="#" :before-upload="handleBefore" :http-request="httpRequest" accept="xlsx" > <el-button type="primary" size="small"> <i class="iconfont icon-piliangchuangjian">i>批量创建el-button > el-upload> <el-dialog title="批量导入" v-model="dialogVisible" width="30%"> <div class="export-main" v-if="scssce"> <div class="export-img"> <img src="@/assets/downloadC.png" /> <span class="green">上传成功span> <div class="linegreen">div> div> <div class="export-text">{{ msg }}div> div> <div class="export-main" v-else> <div class="export-img"> <img src="@/assets/downloadF.png" /> <span class="red">上传失败span> <div class="linered">div> div> <div class="export-text"> <span class="msg-text" v-for="(item, index) in msgList" :key="index"> {{ index + 1 }}、{{ item.errorMsg }} span> div> <div class="export-tips">请修正后重新导入div> div> el-dialog> div> template>
下载Excel(返回一个下载地址)
const downloadFn = () => { downloadTemplateApi().then((res) => { window.open( process.env.VUE_APP_DOWNLOAD_URL + res.data.data, // res.data.data, "_self" ); }); };
下载Excel(返回一个blob)
// 下载模版 export const filterBlob = (data, name) => { let blob = new Blob([data], { type: 'application/vnd.ms-excel' }); // 创建一个临时的url指向blob对象 let url = window.URL.createObjectURL(blob); // 创建url之后可以模拟对此文件对象的一系列操作,例如:预览、下载 let a = document.createElement('a'); a.href = url; a.download = name; a.click(); // 释放这个临时的对象url window.URL.revokeObjectURL(url); };