Vue+iview实现自定义格式导出Excel文件

举报
达拉崩巴斑得贝迪卜多 发表于 2021/12/20 22:05:08 2021/12/20
【摘要】 背景:项目中要实现一个导出Excel文件模板的功能,原来实现是通过后台生成然后前端请求下载,这样要消耗IO资源,然后看了一下之前项目的导出功能,发现原来Vue+iview可以实现本地数据导出,不过ivie...

背景:项目中要实现一个导出Excel文件模板的功能,原来实现是通过后台生成然后前端请求下载,这样要消耗IO资源,然后看了一下之前项目的导出功能,发现原来Vue+iview可以实现本地数据导出,不过iview自带的方法只能导入CSV格式的文件,然后我是需要导出xlsx格式的文件,研究了一下,通过简单修改iview源码,可以实现自定义格式的文件,比如Excel,txt等,下面走起

1.先添加导出按钮

<Button
    type="primary"
    @click="exportData" 
>导出模板</Button>


  
 
  • 1
  • 2
  • 3
  • 4
  • 5

2.绑定表格模板

<Table
    :columns="modelColumns"        
	:data="modelData"
    ref="modelTable" 
    v-show="false"
></Table>
// v-show隐藏表格,这个表格只是用来作为一个导出的模板而存在
// 不能用v-if,会把表格代码去除



  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

3.绑定数据和方法

<script>
	export default{
		data(){
			return{
				modelData:[],
				modelColumns:[
					{title:'手机号'}// 列名根据需要添加
				]
			}
		},
		methods:{
			exportData(){
				this.$refs.modelTable.exportCsv({
					filename:'模板名字',
					columns:this.modelColumns,
					data:this.modelData
				})
			}
		}
	}
</script>


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

如果只要导出CSV格式的文件,到这里就已经ok了,下面我们通过改源码实现自定义格式
写出上面代码后,按住Ctrl点exportCsv方法,先择iview.js文件进去,然后exportCsv的方法,复制在后面,自定义一个名字,修改下面的关键代码,然后和调用exportCsv一样,调用加一个type属性就ok了

if(params.filename){
	if(params.filename.indexOf('.'+params.type)===-1{
		params.filename+='.'+params.type;
	}
}else{
	params.filename='table.'+params.type;	
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

修改完之后保存,其它不变,调用方法时增加type属性

methods:{
	exportData(){
		this.$refs.modelTable.exportCsv({
			filename:'模板名字',
			type:'xlsx' // 也可以填写txt,xls
			columns:this.modelColumns,
			data:this.modelData
		})
	}
}


  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

文章来源: lvsige.blog.csdn.net,作者:祥子的小迷妹,版权归原作者所有,如需转载,请联系作者。

原文链接:lvsige.blog.csdn.net/article/details/111596366

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。