基于ElementUI封装Excel数据导入组件
由于前端项目使用的是Vue-cli3.0 + TypeScript的架构,所以该组件也是基于ts语法封装的,组件的完整代码如下:
<template>
<div id="myImport">
<el-button type="primary" plain @click="importDialogVisible = true">导入</el-button>
<!-- 导入弹窗 -->
<el-dialog :title="name + '导入'" :visible.sync="importDialogVisible" width="560px"
:close-on-click-modal="false" @close="fileList = []">
<div>
<div style="color: #2D2D2D;margin-bottom: 20px;">导入文件</div>
<el-upload class="upload-demo"
ref="upload"
:action="url"
name="excelFile"
:headers="importHeaders"
:on-change="changeUpload"
:on-success="uploadSuccess"
:file-list="fileList"
:limit="1"
:multiple="false"
:auto-upload="false"
>
<el-button slot="trigger" type="primary">选取文件</el-button>
<div slot="tip" class="el-upload__tip"></div>
</el-upload>
<br><br>
<div><span style="color: #5C5C5C;font-size: 12px;border-bottom: 1px solid #5C5C5C;">{{name + '模板下载'}}</span></div>
<el-button style="position: relative;right: -420px;" type="primary" @click="submitUpload">导入</el-button>
</div>
</el-dialog>
</div>
</template>
<script lang="ts">
import { Component, Prop, Emit, Vue, Ref } from 'vue-property-decorator'
@Component
export default class MyImport extends Vue {
@Prop({ default: '' }) private url!: string
@Prop({ default: '' }) private name!: string
private importDialogVisible: boolean = false
private importHeaders: Object = {'token': sessionStorage.getItem('token')}
private fileList: Array<any> = []
@Ref() readonly upload!: any
public changeUpload(file: File, fileList: Array<any>) {
let index: number = file.name.lastIndexOf('.')
let suffix: string = file.name.substring(index + 1).toUpperCase()
if (suffix !== 'XLS' && suffix !== 'XLSX') {
this.$message.error('只支持导入execl文件')
this.upload.clearFiles()
return false
}
this.fileList = fileList
}
public submitUpload() {
if(this.fileList.length == 0) {
this.$message.error('请选择要导入的文件')
return false
}
this.upload.submit()
}
@Emit('uploadSuccess')
public uploadSuccess(res: any) {
this.importDialogVisible = false;
return res
}
}
</script>
<style lang="scss">
#myImport {
display: inline-block;
margin-left: 10px;
.el-dialog {
text-align: initial;
.el-dialog__header {
background-color: #824C96;
padding: 6px;
.el-dialog__title {
color: #fff;
font-size: 14px;
margin-left: 10px;
}
.el-dialog__close {
color: #fff;
position: relative;
top: -10px;
right: -10px;
}
}
}
}
</style>
Vue与ts集成的语法风格请查看vue-property-decorator官方文档。
具体应用呢就是在对应的.vue文件引入该组件,假设组件名称为my-import,然后在页面对应位置加入以下代码:
<div class="btn-item">
<el-button type="primary">查询</el-button>
<el-button type="primary" plain>重置</el-button>
<el-button type="primary" plain>导出</el-button>
<!--导入组件-->
<my-import :url="url" :name="name" @uploadSuccess="uploadSuccess"></my-import>
</div>
其中url为后台导入接口路径,name为导入信息名称,uploadSuccess为导入成功的回调。
代码运行后的展示效果如下:

基于ElementUI封装Excel数据导入组件的更多相关文章
- 基于NPOI的Excel数据导入
从Excel导入数据最令人头疼的是数据格式的兼容性,特别是日期类型的兼容性.为了能够无脑导入日期,折腾了一天的NPOI.在经过测试确实可以导入任意格式的合法日期后,写下这篇小文,与大家共享.完整代码请 ...
- 基于element-ui封装一个Table模板组件
大家在做后台管理系统的时候,写的最多的可能就是表格页面了,一般分三部分:搜索功能区.表格内容区和分页器区.一般这些功能都是使用第三方组件库实现,比如说element-ui,或者vuetify.这两个组 ...
- java基于xml配置的通用excel单表数据导入组件(五、Action处理类)
package xxxxxx.manage.importexcel; import java.io.File; import java.util.HashMap; import java.util.M ...
- 效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中【附源代码下载】) 转
效率最高的Excel数据导入---(c#调用SSIS Package将数据库数据导入到Excel文件中[附源代码下载]) 本文目录: (一)背景 (二)数据库数据导入到Excel的方法比较 ...
- kettle将Excel数据导入oracle
导读 Excel数据导入Oracle数据库的方法: 1.使用PL SQL 工具附带的功能,效率比较低 可参考这篇文章的介绍:http://www.2cto.com/database/201212/17 ...
- 批量Excel数据导入Oracle数据库
由于一直基于Oracle数据库上做开发,因此常常会需要把大量的Excel数据导入到Oracle数据库中,其实如果从事SqlServer数据库的开发,那么思路也是一样的,本文主要介绍如何导入Excel数 ...
- 代码执行批量Excel数据导入Oracle数据库
由于基于Oracle数据库上做开发,因此常常会需要把大量的Excel数据导入到Oracle数据库中,其实如果从事SqlServer数据库的开发,那么思路也是一样的,本文主要介绍如何导入Excel数据进 ...
- Java代码实现excel数据导入到Oracle
1.首先需要两个jar包jxl.jar,ojdbc.jar(注意版本,版本不合适会报版本错误)2.代码: Java代码 import java.io.File; import java.io.Fi ...
- 将Excel数据导入mysql数据库的几种方法
将Excel数据导入mysql数据库的几种方法 “我的面试感悟”有奖征文大赛结果揭晓! 前几天需要将Excel表格中的数据导入到mysql数据库中,在网上查了半天,研究了半天,总结出以下几种方法,下面 ...
随机推荐
- XSD 命令及 WSDL 命令
[XSD] 方法一:通过Xsd2Code工具生成相应代码(制作XSD工具有:Altova XMLSpy) 方法二:通过XSD命令生成相应代码 XML 架构定义 (Xsd.exe) 工具从 XDR.XM ...
- 【JZOJ4898】【NOIP2016提高A组集训第17场11.16】人生的价值
题目描述 NiroBC终于找到了人生的意义,可是她已经老了,在新世界,没有人认识她,她孤独地在病榻上回顾着自己平凡的一生,老泪纵横.NiroBC多么渴望再多活一会儿啊! 突然一个戴着黑色方框眼镜,方脸 ...
- Directx11教程(5) 画一个简单的三角形(1)
原文:Directx11教程(5) 画一个简单的三角形(1) 在本篇教程中,我们将通过D3D11画一个简单的三角形.在D3D11中,GPU的渲染主要通过shader来操作(当然还有一些操作 ...
- Hibernate中的Session对象 标签: hibernatesession 2017-01-22 22:10 238人阅读 评论(
Hibernate中的Session 大家在看hibernate视频的时候一定都发现了,每次要操作数据库,总是要新建一个session对象,Hibernate在对资料库进行操作之前,必须先取得Sess ...
- Kubernetes1.4即将发布
(一)发布历史 Kubernetes 1.0 - 2015年7月发布 Kubernetes 1.1 - 2015年11月发布 Kubernetes 1.2 - 2016年3月发布 Kubernetes ...
- HDU_1021:Fibonacci Again
Problem Description There are another kind of Fibonacci numbers: F(0) = 7, F(1) = 11, F(n) = F(n-1) ...
- BZOJ 1934洛谷2057善意的投票题解
题目链接 BZ链接 又是一道玄学的网络流题 我们这样建图: 对于同意观点1的原点向其连边,对于同一观点2点向汇点连边 然后如果两个人是朋友,就连一条双向边. 为什么这样是对的呢? 对于一个人来说,他要 ...
- php上传文件与图片到七牛的实例详解
上传文件到七牛最简单的方式就是使用七牛官方最新的SDK 用composer安装PHP SDK composer require qiniu/php-sdk 上传文件到七牛 use Qiniu\Auth ...
- 【Linux】 经典Linux系统工程师面试题(转载)
1.如何将本地80端口的请求转发到8080端口,当前主机IP为192.168.16.1,其中本地网卡eth0: 答: # iptables -t nat -A PREROUTING -d 192.16 ...
- CODE FESTIVAL 2017 qual B B - Problem Set【水题,stl map】
CODE FESTIVAL 2017 qual B B - Problem Set 确实水题,但当时没想到map,用sort后逐个比较解决的,感觉麻烦些,虽然效率高很多.map确实好写点. 用map: ...