首页 > 解决方案 > 将数组数组导出到 CSV

问题描述

我正在尝试遍历多维数组以将其导出为 CSV。我尝试在线复制一些指南,并且大多数似乎都显示了与如何将 JavaScript 数组信息导出到 csv(在客户端)类似的解决方案?,但是他们都提到了const rows =输入信息数组的位置。我试图修改它以循环遍历数组,但它没有提示我下载 CSV,所以我不确定它是否有效。谁能告诉我我做错了什么。

function createCSV() {
    // loop the outer array
    for (var y = 0; y < properties.length; y++) {
        // get the size of the inner array
        var innerArrayLength = properties[y].length;
        // loop the inner array
        for (var z = 0; z < innerArrayLength; z++) {
            const rows = [
                [z]
            ];
            let csvContent = "data:text/csv;charset=utf-8,"
                + rows.map(e => e.join(",")).join("\n");
        }
    }

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

    link.click();
}

注意:这是对Export and append object to csv的改写,因为我从使用对象更改为多维数组,这从根本上改变了问题

标签: javascriptarrayscsvexportexport-to-csv

解决方案


我把它复杂化了。下面的代码有效,我创建了一个按钮来触发该功能,而不是强制点击。

function createCSV() {
    var csv = "";
    properties.forEach(function(row) {
        csv += row.join(',');
        csv += "\n";
    });

    var hiddenElement = document.createElement('a');
    hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csv);
    hiddenElement.target = '_blank';
    hiddenElement.download = 'properties.csv';
    hiddenElement.click();
}

推荐阅读