csv的导出

    /**
     * 导出csv文件
     */
    async exportExcel() {
      const selectedRow = this.selectedRows
      let tableData = []
      // 判断是否只导出选中记录
      if (selectedRow && selectedRow.length > 0) {
        tableData = selectedRow
      } else {
        const resp = await getAllEnterpD()
        tableData = resp.data
      }
      const jsonData = {
        trade: {
        // 标题 this.tHead = ['姓名','性别']
          tHeader: this.tHead,
          // 要导出的字段 this.filterVal = ['name','gender']
          filterVal: this.filterVal,
          list: tableData
        }
      }
      this.csvMethod(jsonData)
    },
    csvMethod(data) {
      // csv文件:","逗号换列,\n换行,\t防止excel将长数字变科学计算法等样式
      // 要导出的json数据 // 主表
      const mainLists = data.trade
      // ## 数据处理
      // 一级表// 一级标题
      const mainTitle = mainLists.tHeader
      // 一级过滤
      const mainTitleForKey = mainLists.filterVal
      // 一级数据
      const mainList = [...mainLists.list]
      const mainStr = []
      // 标题添加上换列转成字符串并存进数组
      mainStr.push(mainTitle.join('\t,') + '\n')
      for (let i = 0; i < mainList.length; i++) {
        const temp = []
        for (let j = 0; j < mainTitleForKey.length; j++) {
          let listValue = mainList[i][mainTitleForKey[j]]
          // 性别
          if (mainTitleForKey[j] === 'leaderGender') {
            listValue = listValue === 0 ? '男' : '女'
          }
          // 根据过滤器拿出对应的值
          temp.push(listValue)
        }
        // 取出来的值加上逗号换列转字符串存数组
        mainStr.push(temp.join('\t,') + '\n')
      }
      // 两个表数组转成字符串合并
      const merged = mainStr.join('')

      // ## 导出操作
      // encodeURIComponent解决中文乱码
      const uri = 'data:text/csv;charset=GBK,\ufeff' + encodeURIComponent(merged)
      // 通过创建a标签实现
      const link = document.createElement('a')
      link.href = uri
      // 对下载的文件命名
      link.download = `${Date.now()}.csv`
      document.body.appendChild(link)
      link.click()
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值