Vue3+Quasar 前端导出

Ps:用的是quasar框架 Table 自带的导出 exportFile 功能, 并做了一些封装调整;

新建download.ts文件

//download.ts
import {exportFile, useQuasar} from "quasar";
const $q = useQuasar();

export function wrapCsvValue (val:any, formatFn:any) {
  let formatted = formatFn !== void 0 ? formatFn(val) : val;
  formatted = formatted === void 0 || formatted === null ? '' : String(formatted);
  formatted = formatted.split('"').join('""');
  return `"${formatted}"`;
}

export function exportDataCsv(columns: any[], Data: any[],fileName:string){
  // @ts-ignore
  // @ts-ignore

  const content = [columns.map(col => wrapCsvValue(col.label))].concat(
    Data.map(row => columns.map(col => wrapCsvValue(
      typeof col.field === 'function'
        ? col.field(row)
        : row[ col.field === void 0 ? col.name : col.field ],
      col.format,
    )).join(','))
  ).join('\r\n')
  const status = exportFile(
    `${fileName}.csv`,
    content, {
      mimeType: 'text/csv',
      byteOrderMark: '\uFEFF', //解决乱码问题
      encoding:'utf-8'
    },
  )
  if (status !== true) {
    $q.notify({
      message: 'Browser denied file download...',
      color: 'negative',
      icon: 'warning'
    })
  }
}

Vue代码

import {exportDataCsv} from "src/untils/file/download";
<q-btn outline no-wrap :loading="loading" label="导出" icon="file_download" color="primary"   @click="exportExcel('字典值列表')"/>
const exportExcel = (fileName) =>{
  exportDataCsv(state.columns,state.typeList,fileName);
}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值