在前端生成并下载 cvs 文件

662 阅读1分钟

需求来源

在做问卷系统的时候,最后需要导出数据,格式是 csv 格式。

本来的思路:使用后台写入一个文件,然后将该文件链接发送给前端,从而实现下载 csv。

但思来想去,总感觉这样子很 lou。因为我的服务器宽带只有 1M,如果在服务器上创建 csv 文件并且提供链接给前端下载的话,后台的负载会很高。

简单介绍 csv

csv 全称 Comma Separated Values,通过简单的逗号分隔实现 “表格”。我能体会到的好处就是,csv 能够直接被 excel 识别。

csv 重要规则

  • 一行对一行
  • 通过半角逗号分隔列,每一行的逗号都要对应。
  • 不管是不是使用双引号括起来,如果内容中有双引号,那么都需要将双引号成对, 一个变两个。
  • 文本内有逗号时,可以将逗号换成全角逗号,也可以将逗号用双引号包裹。

零碎的知识点

示例代码

<button>导出 CSV</button>
<script>
    document.querySelector('button').onclick = () => {
        const data = `姓名,年龄\n龙天,20\n王大发,89`
        const aTag = document.createElement("a")
        const blob = new Blob(['\uFEFF',data], {type: 'text/csv'})
        aTag.download = `文件名.csv`
        aTag.href = URL.createObjectURL(blob)
        aTag.click()
        URL.revokeObjectURL(aTag.href)
   }
</script>

最终效果

GIF 2022-8-18 23-04-10.gif