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

2023-12-29

我正在尝试将文件导出为 .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))
    ///////

  });

});

我在这个线程中写了一个解决方案:如何使用 window.open 设置文件名 https://stackoverflow.com/questions/7034754/how-to-set-a-file-name-using-window-open/24643984#24643984

这是简单的解决方案:

$("#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;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 javascript 将文件下载为 .csv 文件 的相关文章

随机推荐