Vue + iView实现Excel上传功能的完整代码


Posted in Vue.js onJune 22, 2021

1、HTML部分

<Col span="2">上传文件:</Col>
<Col span="22" class="uploadExcelBox">
    <Upload ref="uploadExcel" :loading="uploadLoading" :action="uploadFileUrl" accept="xlsx,xls" :format="uploadFormat" :before-upload="beforeImgFile" :on-success="successImgFile" :on-error="errorImgFile" :show-upload-list="true">
         <Button type="success">上传附件</Button>
	 </Upload>
     <div v-if="uploadingFile !== null">待上传文件:
          <span class="blueFont">{{ fileName }}</span>
          <Button @click="uploadFun(index)" :loading="loadingStatus" class="manualUploadBtn">{{ loadingStatus ? '上传中...' : '点击开始上传' }}</Button>
      </div>
</Col>

2、JS部分

<script>
    // import excel from '@/libs/excel'
	import service from '@/libs/request' //用来取当前域名
	import reportFormApi from '@/api/reportForm'
    export default {
        data() {
            return {
                uploadLoading:false,//上传控件loading状态
				uploadFileUrl: "",
				uploadFormat:['xlsx','xls'],
				uploadingFile:null,//待上传的文件
                loadingStatus:false,//upload组件的状态
                fileName:"",//待上传文件的名称
            }
        },
        mounted() {
            this.uploadFileUrl = service.apiUrl + "/qingximaster/winInfo/execlAdd";//上传Excel的接口路径,后端人员提供。
        },
        methods: {
			// 图片上传之前
			beforeImgFile(file) {
				// console.log(file);
				const fileExt = file.name.split('.').pop().toLocaleLowerCase()
				if (fileExt === 'xlsx' || fileExt === 'xls') {
					var formdata = new FormData();
					formdata.append("file",file);
                    this.fileName = formdata.get('file').name;//通过formdata.get('file')方法,可以取file文件里的信息,例如Excel的文件名。
					this.uploadingFile =  formdata;//注意:这个将作为参数传给接口实现上传。传给接口的file不需要 formdata.get('file'),直接传file。
				} else {
					this.$Notice.warning({
						title: '文件类型错误',
						desc: '文件:' + file.name + '不是EXCEL文件,请选择后缀为.xlsx或者.xls的EXCEL文件。'
					})
				}
				return false
			},
			// 上传成功
			successImgFile(response, file, fileList) {
                this.$Notice.success({
                    title: '提示',
                    desc: '上传成功!'
                })
			},
			// 上传失败
			errorImgFile(error, file, fileList) {
				this.$Notice.success({
                    title: '提示',
                    desc: '上传失败!'
                })
				console.log(error);
			},
			uploadFun(index){//调接口上传Excel
				this.loadingStatus = true;
				reportFormApi.uploadExcel({
                    url: this.uploadFileUrl,
                    file: this.uploadingFile
                }).then(res =>{
					this.uploadingFile = null;
                    this.fileName = "";
                    if(res.code==0){
                        this.infoList[index].content = JSON.stringify(res.data);
					    // console.log(this.infoList[index].content);
                        this.$Message.success("上传成功!");
                    }else{
                        this.$Message.error(res.message);
                    }
				}).finally(()=>{
					this.loadingStatus = false;
                    this.uploadLoading = false;
                })
			},
        }
    }

3、页面效果如下

(1)进入页面默认展示的样子

Vue + iView实现Excel上传功能的完整代码

 (2)选中要上传的Excel

Vue + iView实现Excel上传功能的完整代码

 (3)“点击开始上传”之后

Vue + iView实现Excel上传功能的完整代码

 Vue + iView实现Excel上传功能的完整代码

以上就是Vue + iView实现Excel上传的详细内容,更多关于vue iview excel上传的资料请关注三水点靠木其它相关文章!

Vue.js 相关文章推荐
vue在图片上传的时候压缩图片
Nov 18 Vue.js
vue自定义插件封装,实现简易的elementUi的Message和MessageBox的示例
Nov 20 Vue.js
详解Vue3 Teleport 的实践及原理
Dec 02 Vue.js
vue3.0+vue-router+element-plus初实践
Dec 02 Vue.js
8个非常实用的Vue自定义指令
Dec 15 Vue.js
vue3.0自定义指令(drectives)知识点总结
Dec 27 Vue.js
vue3如何优雅的实现移动端登录注册模块
Mar 29 Vue.js
Vue如何实现组件间通信
May 15 Vue.js
Vue3.0写自定义指令的简单步骤记录
Jun 27 Vue.js
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
vue实力踩坑之push当前页无效
Apr 10 Vue.js
vue route新窗口跳转页面并且携带与接收参数
Apr 10 Vue.js
Vue vee-validate插件的简单使用
Jun 22 #Vue.js
vue3使用vue-router的完整步骤记录
一篇文章学会Vue中间件管道
Jun 20 #Vue.js
Vue过滤器(filter)实现及应用场景详解
使用Vue3+Vant组件实现App搜索历史记录功能(示例代码)
解决Vue+SpringBoot+Shiro跨域问题
Jun 09 #Vue.js
Vue中插槽slot的使用方法与应用场景详析
You might like
PHP 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
浅析函数声明和函数表达式——函数声明的声明提前
2016/05/03 Javascript
浅析js绑定事件的常用方法
2016/05/15 Javascript
jquery attr()设置和获取属性值实例教程
2016/09/25 Javascript
Bootstrap源码学习笔记之bootstrap进度条
2016/12/24 Javascript
从零学习node.js之mysql数据库的操作(五)
2017/02/24 Javascript
vue 解决addRoutes动态添加路由后刷新失效问题
2018/07/02 Javascript
JavaScript实现正则去除a标签并保留内容的方法【测试可用】
2018/07/18 Javascript
vue+express 构建后台管理系统的示例代码
2018/07/19 Javascript
vue-router 控制路由权限的实现
2020/09/24 Javascript
[50:48]LGD vs CHAOS 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
python正则匹配抓取豆瓣电影链接和评论代码分享
2013/12/27 Python
Tornado服务器中绑定域名、虚拟主机的方法
2014/08/22 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
python+numpy+matplotalib实现梯度下降法
2018/08/31 Python
python 用opencv调用训练好的模型进行识别的方法
2018/12/07 Python
解决Pycharm后台indexing导致不能run的问题
2019/06/27 Python
pytorch神经网络之卷积层与全连接层参数的设置方法
2019/08/18 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
python 利用turtle库绘制笑脸和哭脸的例子
2019/11/23 Python
如何在django中添加日志功能
2020/02/06 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
python如何实时获取tcpdump输出
2020/09/16 Python
用python批量移动文件
2021/01/14 Python
中国一家综合的外贸B2C电子商务网站:DealeXtreme(DX)
2020/03/10 全球购物
高一数学教学反思
2014/02/07 职场文书
大学生就业策划书范文
2014/04/04 职场文书
平安工地汇报材料
2014/08/19 职场文书
学生检讨书怎么写?
2014/10/10 职场文书
2014年超市工作总结
2014/11/19 职场文书
端午节寄语2015
2015/03/23 职场文书
企业党建工作总结2015
2015/05/26 职场文书
公司食堂管理制度
2015/08/05 职场文书
《落花生》教学反思
2016/02/16 职场文书
CSS极坐标的实例代码
2021/06/03 HTML / CSS