前端实现表格的导入导出功能

本文详细记录了一个Vue项目中使用Ant Design UI框架实现数据的导出和导入功能。导出功能根据条件选择全部或部分数据,转换为Blob格式并创建下载链接。导入功能则是调用接口上传文件,成功后更新页面状态,提示导入成功。
摘要由CSDN通过智能技术生成

最近项目中使用了导入导出的功能,在这里记录一下

  • 项目框架vue
  • ui框架 antd
    在这里插入图片描述

导出

    _exportFile(all) {
      var ids = all === true ? { judgeInfoList: [] } : { judgeInfoList: this.row }
      this.allLoading = true
      const obj = Object.assign({}, this.form)
      console.log(ids, obj)
      this.exportBtn = true
      this.exportAllBtn = true
      exportFile(Object.assign(obj, ids))
        .then(res => {
          console.log(res)
          if (res.isError) {
            this.$message.error(res.error.message)
            return
          }
          const blob = new Blob([res.data])
          const a = document.createElement('a')
          const url = window.URL.createObjectURL(blob)
          a.href = url
          console.log(res.headers)
          a.download = decodeURI(res.headers['content-disposition'].split('=')[1])
          document.body.appendChild(a)
          a.click()
          document.body.removeChild(a)
        })
        .catch(err => {
          console.log('err', err)
          // this.$message.error('接口请求异常')
        })
        .finally(() => {
          this.exportBtn = false
          this.exportAllBtn = false
          this.allLoading = false
        })
    },

导出时先判断一下是全部导出还是导出多个,转换成blob格式后创建一个下载链接的a标签手动点击一下,再删除a标签就完成了导出的功能

导入

      importFile({
        'files': [
          {
            'attachUrl': this.checkAccountParams.attachUrl,
            'fileName': this.checkAccountParams.fileName,
            'type': 2
          },
          {
            'attachUrl': this.numberParams.attachUrl,
            'fileName': this.numberParams.fileName,
            'type': 1
          }
        ],
        'povertyType': this.obj.povertyType
      }).then((res) => {
        if (res.isError) {
          this.$message.error(res.error.message)
        } else {
          this.fileList = []
          this.numberFileList = []
          this.visible = false
          this.duplicate = false
          this.duplicateNumber = false
          this.$emit('changeList')
          this.$message.success('导入成功')
        }
      }).finally(() => {
        this.saveBtn = false
      })
      
	父组件
    // 导入完成修改在册户数列表
    changeList () {
      this._list(1)
      this.$emit('importBtn')
    },
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值