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 24 Vue.js
vue el-upload上传文件的示例代码
Dec 21 Vue.js
vue导入.md文件的步骤(markdown转HTML)
Dec 31 Vue.js
vue 实现click同时传入事件对象和自定义参数
Jan 29 Vue.js
vue2实现provide inject传递响应式
May 21 Vue.js
Vue3中的Refs和Ref详情
Nov 11 Vue.js
Vue h函数的使用详解
Feb 18 Vue.js
Vue的列表之渲染,排序,过滤详解
Feb 24 Vue.js
深入讲解Vue中父子组件通信与事件触发
Mar 22 Vue.js
vue实现拖拽交换位置
Apr 07 Vue.js
分享一个vue实现的记事本功能案例
Apr 11 Vue.js
vue数据字典取键值项目的字典问题
Apr 12 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 读取文件乱码问题
2010/02/20 PHP
PHP禁止个别IP访问网站
2013/10/30 PHP
PHP微信开发之查询微信精选文章
2016/06/23 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
php 输出缓冲 Output Control用法实例详解
2020/03/03 PHP
gearman管理工具GearmanManager的安装与php使用方法示例
2020/02/27 PHP
Yii 框架使用Forms操作详解
2020/05/18 PHP
PHP Ajax跨域问题解决方案代码实例
2020/08/01 PHP
关于JavaScript定义类和对象的几种方式
2010/11/09 Javascript
jQuery实战之仿淘宝商城左侧导航效果
2011/04/12 Javascript
JavaScript之AOP编程实例
2015/07/17 Javascript
日常收集整理的JavaScript常用函数方法
2015/12/10 Javascript
jQuery 获取跨域XML(RSS)数据的相关总结分析
2016/05/18 Javascript
Bootstrap基本组件学习笔记之input输入框组(9)
2016/12/07 Javascript
简单实现jQuery级联菜单
2017/01/09 Javascript
jquery实现限制textarea输入字数的方法
2017/09/06 jQuery
JQuery实现table中tr上移下移的示例(超简单)
2018/01/08 jQuery
antd组件Upload实现自己上传的实现示例
2018/12/18 Javascript
JS+canvas五子棋人机对战实现步骤详解
2020/06/04 Javascript
three.js着色器材质的内置变量示例详解
2020/08/16 Javascript
[49:54]Ti4 循环赛第三日 LGD vs Titan
2014/07/12 DOTA
python读取html中指定元素生成excle文件示例
2014/04/03 Python
python实现的一个火车票转让信息采集器
2014/07/09 Python
python3解析库lxml的安装与基本使用
2018/06/27 Python
Python 确定多项式拟合/回归的阶数实例
2018/12/29 Python
详解python uiautomator2 watcher的使用方法
2019/09/09 Python
利用pytorch实现对CIFAR-10数据集的分类
2020/01/14 Python
python中常见错误及解决方法
2020/06/21 Python
QT5 Designer 打不开的问题及解决方法
2020/08/20 Python
装饰活动策划方案
2014/02/11 职场文书
签约仪式主持词
2014/03/19 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
奖励通知
2015/04/22 职场文书
zabbix监控mysql的实例方法
2021/06/02 MySQL
Vue图片裁剪组件实例代码
2021/07/02 Vue.js
面试官问我Mysql的存储引擎了解多少
2022/08/05 MySQL