簡體   English   中英

將 html 表導出到 Javascript 中的 csv

[英]Export html table to csv in Javascript

我有兩個功能

導出 HTML 表 下載 CSV 文件

function exportTableToCSV(filename) {
    var csv = [];
    var rows = document.querySelectorAll("table tr");

    for(var i = 0; i < rows.length; i++){
        var row = [], cols = rows[i].querySelectorAll("td, th");
        for(var j = 0; j < cols.length; j++){
            row.push(cols[j].innerText);
        }
        csv.push(row.join(","));
    }

    // download csv file
    downloadCSV(csv.join("\n"), filename);
}

function downloadCSV(csv, filename) {
        var csvFile;
    var downloadLink;

    csvFile = new Blob([csv], {type:"text/csv"});
    downloadLink = document.createElement("a");
    downloadLink.download = filename;
    downloadLink.href = window.URL.createObjectURL(csvFile);
    downloadLink.style.display = "none";
    document.body.appendChild(downloadLink);
    downloadLink.click();
}

exportTableToCSV('test.csv');

我有一個情況,這段代碼在有數組的地方工作得很好

[1,2] [3,4] [5,6]

但如果數據是

[1,"example1,data1",10] [2,"example1,data2",20]

csv 文件為示例 1 和數據 1 生成兩個額外的列。我們如何確保“示例 1,數據 1”都保留在一列中。 如果數組中有多個逗號的字符串如何實現?

謝謝,

斯瓦蒂

//dataToBeDocumented= [{object},{object},{object}] 應該是這個格式

function ConvertToCSV(objArray) {
  var array = typeof objArray != "object" ? JSON.parse(objArray) : objArray;
  try {
    var str = "";
    var obj = array[0] ? array[0] : null;
    var res = Object.keys(obj);
  } catch (err) {
    return err;
  }

  res = res.join(",");
  // console.log(res);
  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";
  }
  // console.log(str);
  return res + "\r\n" + str;
}
function makeCSV(content, outputFileName) {
    this.content = content;
    if (typeof this.content === "string") {
      this.content = JSON.parse(this.content);
    }
    try {
      var uri = "data:text/csv;charset=utf-8," + ConvertToCSV(this.content);
    } catch (err) {
      throw err;
    }
    var downloadLink = document.createElement("a");
    downloadLink.href = uri;
    var opFileName = `${outputFileName}.csv`;
    // console.log(opFileName);
    downloadLink.download = opFileName;
    document.body.appendChild(downloadLink);
    downloadLink.click();
    document.body.removeChild(downloadLink);
  }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM