小编典典

如何将 JavaScript 数组信息导出到 csv(在客户端)?

all

我知道有很多这种性质的问题,但我需要使用 JavaScript 来做到这一点。我正在使用Dojo 1.8并拥有数组中的所有属性信息,如下所示:

[["name1", "city_name1", ...]["name2", "city_name2", ...]]

知道如何将其导出到CSV客户端吗?


阅读 225

收藏
2022-03-03

共1个答案

小编典典

您可以在本机 JavaScript 中执行此操作。您必须将数据解析为正确的 CSV 格式(假设您正在使用问题中描述的数据数组):

const rows = [
    ["name1", "city1", "some other info"],
    ["name2", "city2", "more info"]
];

let csvContent = "data:text/csv;charset=utf-8,";

rows.forEach(function(rowArray) {
    let row = rowArray.join(",");
    csvContent += row + "\r\n";
});

或更短的方式(使用箭头函数):

const rows = [
    ["name1", "city1", "some other info"],
    ["name2", "city2", "more info"]
];

let csvContent = "data:text/csv;charset=utf-8," 
    + rows.map(e => e.join(",")).join("\n");

然后您可以使用 JavaScriptwindow.openencodeURI函数来下载 CSV 文件,如下所示:

var encodedUri = encodeURI(csvContent);
window.open(encodedUri);

编辑:

如果你想给你的文件一个特定的名字,你必须做一些不同的事情,因为不支持使用该window.open方法访问数据
URI。为了实现这一点,您可以创建一个隐藏的<a>DOM 节点并设置其download属性,如下所示:

var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "my_data.csv");
document.body.appendChild(link); // Required for FF

link.click(); // This will download the data file named "my_data.csv".
2022-03-03