iview表格导出csv遇到的几个问题以及解决方法(序号、日期)

1 篇文章 0 订阅
  1. 序号丢失
    一般来说我们在渲染表格的时候后台不会把序号返给我们,我们一般都类似官网那样使用type:index,但是这样有个缺点,就是表格第二页因为重新获取数据并且赋值,第二页的内容序号会从1开始。这个时候我们就需要使用render方法了,根据后台返回的当前页码和当前分页数计算获取当前行的序号。
columns:[{
		title:'序号'
		type: 'index',
		width: 60,
		align: 'center'
		render: (h, params) => {
			//因为下标从零开始,所以加1,(当前页-1)*当前页的条数
			return h('span',params.index+1+(this.currentPage-1)*this.pageNum)
		}
	},
	...
]

导出序号丢失的原因是exportCsv方法只认key值,所以要解决这个问题就是在获取到数据之后,在每一项数据之后追加一个序号,如index:1这样

columns:[{
		key:index,
		width: 60,
		align: 'center'
	},
	...
	let data = res.data.data  //这里获取到了数据
	//tableData为表格数据
	let tableData=data.map((item,index)=>{
	      item.index = index
	      return item
	})
  1. 日期格式错误我原本是以为excel的关系,下面是原解答。
    在这里插入图片描述
    从图片上可以看出,直接在单元格里面输入日期的话,单元格会自动把输入的日期更换格式,如果输入=“日期”,单元格会按原样输出,长数字也是一样的道理。所以在有些博客上的处理方法就是在exportCsv方法里面的参数里面处理日期,在日期前面加上=号
this.$refs.table.exportCsv({
                        filename: '测试',
                        columns: this.columns,
                        data: this.data.map(item =>{
					            item.date = '="'+item.date+'"'
					            return item;
				          })
                    });

这样的确可以导出正确的格式,但是有两个问题,第一个问题就是页面上日期的字段会变成=“日期”,出现这个的原因是导出的时候在data里面改变了原数组。第二个问题就是如上图的那样,按照原样导出,不过单元格里面的内容不受单元格宽度控制(其实也不是什么大问题),类似于css的overflow。
解决方法就是使用深度复制,一种深度复制的方法就是JSON.parse(JSON.stringfy(data))。

    singlePage(){
        let tableDataTemp = JSON.parse(JSON.stringify(this.tableData))
    	  this.$refs.table.exportCsv({
            filename: '单页',
            data:tableDataTemp,
            column:this.tableColumns1
        })
    },

这样就解决了导出时候修改页面值的问题。这样修改之后导出的日期会变为####,增加单元格的宽度就可以看到日期了。类似于css的overflow:hidden。

iview表格开启树形数据时,可能会出现卡顿的情况。解决这个问题方法如下: 1. 数据量优化:如果树形数据量很大,可以考虑对数据进行优化处理,减少不必要的数据加载。例如,可以通过懒加载或分页的方式,只加载当前可见区域的数据,而不是一次性加载整个树形结构的数据。 2. 虚拟滚动:iview表格组件中的虚拟滚动功能可以用来优化树形数据的渲染和展示。通过设置合理的行高和总高度,以及可见区域的大小,可以减少不必要的DOM渲染,提高表格的性能。 3. 异步加载:如果树形数据较为庞大,可以考虑使用异步加载的方式,按需加载数据。可以通过监听表格的展开和折叠事件,在需要显示子节点时,再通过异步请求获取相应的数据,并进行渲染。 4. 数据缓存:对于经常被访问的树形数据,可以将其缓存在前端,以减少后续的网络请求。可以使用缓存插件,将经常使用的数据缓存在内存中,从而提高数据的读取速度。 5. 优化渲染逻辑:通过对树形数据的遍历和渲染逻辑进行优化,减少不必要的计算和DOM操作,可以提高表格的渲染性能。例如,可以使用缓存机制,对已经渲染过的数据进行复用,避免重复渲染。 综上所述,通过对数据量优化、虚拟滚动、异步加载、数据缓存以及渲染逻辑的优化,可以有效解决iview表格开启树形数据时可能出现的卡顿问题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值