记一次vue导出表格和数据不同步

因为数据跟新但是没渲染到DOM上,所以要将表格导出代码块放进this.$nextTick(),表示在下次dom更新之后,再执行导出表格的代码块

this.$nextTick((v) => {

var el = document.getElementById('outTable')

var wb = XLSX.utils.table_to_book(el)

/* get binary string as output */

var wbout = XLSX.write(wb, { bookType: 'xlsx', bookSST: true, type: 'array' })

try {

FileSaver.saveAs(new Blob([wbout], { type: 'application/octet-stream' }), 'sheetjs.xlsx')

} catch (e) { if (typeof console !== 'undefined') console.log(e, wbout) }

this.loading = false

return wbout

})

根据提供的引用内容,vxe-table插槽的列导出数据不全可能是由于以下原因导致的: 1.导出数据时只会导出表格中显示的列,如果插槽中的列没有设置显示,则不会被导出。 2.插槽中的列可能没有设置field属性,或者设置的field属性与表格数据中的字段不匹配,导致数据无法正确导出。 解决方法如下: 1.确保插槽中的列设置了显示属性,例如设置了show-overflow属性。 2.确保插槽中的列设置了正确的field属性,且与表格数据中的字段匹配。 以下是一个示例代码,演示如何使用vxe-table插槽导出数据: ```html <template> <vxe-table ref="tableRef" :data="tableData" @current-change="currentChangeEvent"> <vxe-column field="name" title="Name"></vxe-column> <vxe-column field="sex" title="Sex"></vxe-column> <vxe-column field="age" title="Age"></vxe-column> <vxe-column field="address" title="Address" show-overflow></vxe-column> <vxe-column title="操作" fixed="right" width="120"> <template #default="{row}"> <el-button type="text" @click="handleEdit(row)">编辑</el-button> <el-button type="text" @click="handleDelete(row)">删除</el-button> </template> </vxe-column> </vxe-table> <el-button type="primary" @click="handleExport">导出</el-button> </template> <script> export default { data() { return { tableData: [ { name: 'John', sex: 'Male', age: 30, address: 'New York' }, { name: 'Mary', sex: 'Female', age: 25, address: 'London' }, { name: 'Tom', sex: 'Male', age: 35, address: 'Paris' }, { name: 'Jerry', sex: 'Male', age: 40, address: 'Tokyo' } ] } }, methods: { handleEdit(row) { // 编辑操作 }, handleDelete(row) { // 删除操作 }, handleExport() { // 导出操作 this.$refs.tableRef.exportData({ type: 'csv' }) }, currentChangeEvent() { // 行选中事件 } } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值