使用javascript将文件下载为.csv文件

新手上路,请多包涵

我正在尝试将文件导出为 .csv 文件,以便当用户单击下载按钮时,浏览器会自动将文件下载为 .csv。我还希望能够为要导出的 .csv 文件设置一个名称

我正在使用 javascript 来做这个

代码如下:

 function ConvertToCSV(objArray) {
  var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
  var str = '';

  for (var i = 0; i < array.length; i++) {
    var line = '';
    for (var index in array[i]) {
      if (line != '') line += ','

      line += array[i][index];
    }

    str += line + '\r\n';
  }

  return str;
}

// Example
$(document).ready(function () {

  // Create Object
  var items = [
    { "name": "Item 1", "color": "Green", "size": "X-Large" },
    { "name": "Item 2", "color": "Green", "size": "X-Large" },
    { "name": "Item 3", "color": "Green", "size": "X-Large" }];

  // Convert Object to JSON
  var jsonObject = JSON.stringify(items);

  // Display JSON
  $('#json').text(jsonObject);

  // Convert JSON to CSV & Display CSV
  $('#csv').text(ConvertToCSV(jsonObject));

  $("#download").click(function() {
    alert("2");
    var csv = ConvertToCSV(jsonObject);
    window.open("data:text/csv;charset=utf-8," + escape(csv))
    ///////

  });

});

原文由 Samuel Tang 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 420
1 个回答

我在这个线程中写了一个解决方案: How to set a file name using window.open

这是简单的解决方案:

 $("#download_1").click(function() {
    var json_pre = '[{"Id":1,"UserName":"Sam Smith"},{"Id":2,"UserName":"Fred Frankly"},{"Id":1,"UserName":"Zachary Zupers"}]';
    var json = $.parseJSON(json_pre);

    var csv = JSON2CSV(json);
    var downloadLink = document.createElement("a");
    var blob = new Blob(["\ufeff", csv]);
    var url = URL.createObjectURL(blob);
    downloadLink.href = url;
    downloadLink.download = "data.csv";

    document.body.appendChild(downloadLink);
    downloadLink.click();
    document.body.removeChild(downloadLink);
});

JSON2CSV 函数:

 function JSON2CSV(objArray) {
    var array = typeof objArray != 'object' ? JSON.parse(objArray) : objArray;
    var str = '';
    var line = '';

    if ($("#labels").is(':checked')) {
        var head = array[0];
        if ($("#quote").is(':checked')) {
            for (var index in array[0]) {
                var value = index + "";
                line += '"' + value.replace(/"/g, '""') + '",';
            }
        } else {
            for (var index in array[0]) {
                line += index + ',';
            }
        }

        line = line.slice(0, -1);
        str += line + '\r\n';
    }

    for (var i = 0; i < array.length; i++) {
        var line = '';

        if ($("#quote").is(':checked')) {
            for (var index in array[i]) {
                var value = array[i][index] + "";
                line += '"' + value.replace(/"/g, '""') + '",';
            }
        } else {
            for (var index in array[i]) {
                line += array[i][index] + ',';
            }
        }

        line = line.slice(0, -1);
        str += line + '\r\n';
    }
    return str;
}

原文由 Jewel 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题