如何在客户端导出 JavaScript 数组到 CSV?

阅读时长 5 分钟读完

CSV(Comma Separated Values) 是一种常见的文件格式,常用于将数据从一个应用程序传输到另一个应用程序。在前端开发中,我们经常需要将数据导出为 CSV 格式,以便用户可以方便地下载和查看。本文将介绍如何使用 JavaScript 和 HTML5 API 将数组信息导出为 CSV 文件。

步骤

第一步:准备数据

在本例中,我们将使用以下示例数组来表示一些假设的数据:

这是一个包含三个对象的数组,每个对象都有 nameagegender 属性。

第二步:生成 CSV 内容

要将数组信息转换为 CSV 格式,我们需要将其转换为逗号分隔的字符串。以下函数将接收数组并返回 CSV 字符串:

该函数先创建一个标题行,该行包含所有属性名称,然后遍历数组并使用 Object.values 方法将每个对象转换为逗号分隔的字符串。最后,它将标题行和所有数据行连接在一起并返回一个字符串。

第三步:创建下载链接

现在我们已经有了 CSV 内容,接下来我们需要将其保存到文件中以供用户下载。下面是一个示例函数,它接收 CSV 字符串并创建一个下载链接:

-- -------------------- ---- -------
-------- ---------------- -
  ----- ---- - --- ----------- - ----- ------------------------- ---
  ----- --- - --------------------------
  ----- ---- - ----------------------------
  ------------------------- -----
  ----------------------------- ------------
  --------------------- - ---------
  --------------------------------
  -------------
  --------------------------------
-

该函数首先将 CSV 文本转换为 Blob 对象,然后创建一个指向该对象的 URL。接下来,它创建一个 <a> 元素,并将 URL 和文件名添加为其属性。最后,它模拟了一个点击操作,以便用户可以下载该文件,并从网页中删除该元素。

第四步:触发下载

现在我们已经准备好了所有必要的代码,接下来我们需要合并它们以触发下载。以下示例函数将调用前面两个函数并将生成的 CSV 应用到后者中:

示例代码

下面是完整的示例代码,包含以上所有函数:

-- -------------------- ---- -------
--------- -----
------
  ------
    ----- --------------- --
    ------------- -----------
  -------
  ------
    ------- -------------------------------- ------------
    --------
      ----- ---- - -
        - ----- ----- ----- ---- --- ------- ------ --
        - ----- ----- ------- ---- --- ------- -------- --
        - ----- ---- --------- ---- --- ------- ------ -
      --

      -------- ----------------- -
        ----- ------ - ----------------------------- - -----
        ----- ---- - ----------- -- -
          ------ ---------------------------- - -----
        ---
        ------ ------ - --------------
      -

      -------- ---------------- -
        ----- ---- - --- ----------- - ----- ------------------------- ---
        ----- --- - --------------------------
        ----- ---- - ----------------------------
        -----------------

- ---------------------------------------------------------- --------
--------------------------------------------------------------------------------
纠错
反馈