【问题标题】:saving array content as csv file js将数组内容保存为 csv 文件 js
【发布时间】:2016-09-20 13:41:21
【问题描述】:

我有一个数组,其中包含另一个数组。 我正在尝试通过此脚本将此数组保存在 csv 文件中,但它不起作用。它不会下载我的文件...

    var data =(JSON.stringify(allFileGenesDetails1));
    var csvContent = '';
    data.forEach(function (infoArray, index) {
        dataString = infoArray.join(';');
        csvContent += index < data.length ? dataString + '\n' : dataString;
    });

    var download = function(content, fileName, mimeType) {
    var a = document.createElement('a');
        mimeType = mimeType || 'application/octet-stream';

        if (navigator.msSaveBlob) { // IE10
            return navigator.msSaveBlob(new Blob([content], { type: mimeType }), fileName);
        } else if ('download' in a) { //html5 A[download]
            a.href = 'data:' + mimeType + ',' + encodeURIComponent(content);
            a.setAttribute('download', fileName);
            document.body.appendChild(a);
            setTimeout(function() {
            a.click();
            document.body.removeChild(a);
            }, 66);
        return true;
    } else { //do iframe dataURL download (old ch+FF):
        var f = document.createElement('iframe');
        document.body.appendChild(f);
        f.src = 'data:' + mimeType + ',' + encodeURIComponent(content);

        setTimeout(function() {
            document.body.removeChild(f);
        }, 333);
        return true;
        }
    }

        download(csvContent, 'csv file.csv', 'text/csv');

【问题讨论】:

  • 了解您使用的浏览器非常重要。例如 Safari 不支持 JS 强制下载,也不支持 html 的“下载”属性。

标签: javascript arrays csv


【解决方案1】:

这里是小提琴https://jsfiddle.net/51fbr4x9/1/ 和我用来保存txt/csv 而不使用Blob 的示例代码。这是示例代码:

$(function() {
    var fileName = "test.csv";
    var table = [
        "colA1,colB1,colC1",
      "colA2,colB2,colC2"
    ];

    if ("download" in document.createElement("a")) {
        var link = $("<a target='_blank' href='data:text/csv;charset=utf-8,%EF%BB%BF" 
        + encodeURI(table.join("\n")) + "' download='" + fileName + "'></a>");
        link.appendTo("body");
        link[0].click();
        setTimeout(function () {
            link.remove();
        }, 50);
        return;  
    }

    var txt = $("<textarea cols='65536'></textarea>").get(0);
    txt.innerHTML = table.join("\n");
    var frame = $("<iframe src='text/csv;charset=utf-8' style='display:none'></iframe>").appendTo("body").get(0);
    frame.contentWindow.document.open("text/csv;charset=utf-8", "replace");
    frame.contentWindow.document.write(txt.value);
    frame.contentWindow.document.close();
    frame.contentWindow.document.execCommand("SaveAs", true, fileName);
    setTimeout(function () {
        $(frame).remove();
        $(txt).remove();
    }, 50);
});

【讨论】:

  • 请把代码带到这里,不要只是把它放在小提琴上。小提琴可能会迷路,这会使这个答案变得不那么有用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-02-23
  • 1970-01-01
  • 2017-06-17
  • 2016-08-25
  • 1970-01-01
  • 2020-07-17
  • 1970-01-01
相关资源
最近更新 更多