前端导出csv文件

<Button onClick={exportData}>数据导出</Button>
function exportData() {
    const { conditionData } = toJS(store);
    const { title } = toJS(prepareStore);
    const name = title ?? '新图表';
    if (conditionData.length === 0) return message.warning('请先拖拽字段!');
    confirm({
      title: '数据导出',
      content: '确认导出当前工作区数据?',
      onOk() {
        downloadDataAsCSV(conditionData, name, 'csv');
      },
      onCancel() {
        console.log('Cancel');
      },
    });
  }
export function downloadDataAsCSV(source, fileName, type = 'csv') {
  let csvRows = [];
  if (!Array.isArray(source)) {
    return;
  }
  for (let j = 0; j < source.length; j++) {
    csvRows.push(source[j].join(','));
  }
  let csvString = csvRows.join('\n');
  // BOM的方式解决EXCEL乱码问题
  const BOM = '\uFEFF';
  csvString = BOM + csvString;

  let downloadLink = document.createElement('a');
  downloadLink.href = `data:attachment/${type},` + encodeURI(csvString);
  downloadLink.download = fileName + `.${type}` || `temp.${type}`;
  document.body.appendChild(downloadLink);
  downloadLink.click();
  document.body.removeChild(downloadLink);
}

source的数据结构(二维数组):
conditionData
在这里插入图片描述
在这里插入图片描述
后记:测试测出来#不能被正常导出,所以应将 encodeURI 换成 encodeURIComponent

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值