为了账号安全,请及时绑定邮箱和手机立即绑定

Js数组转CSV添加列标题

Js数组转CSV添加列标题

达令说 2022-12-02 16:56:56
这是CSV从数组生成一个代码,硬编码值给出正确的列标题和行中的数据。我正在使用循环添加数据,但无法理解如何添加列标题。这是导出 csv 的硬编码数组var Results = [  ["Col1", "Col2", "Col3", "Col4"],  ["Data", 50, 100, 500],  ["Data", -100, 20, 100],];exportToCsv = function() {  var CsvString = "";  Results.forEach(function(RowItem, RowIndex) {    RowItem.forEach(function(ColItem, ColIndex) {      CsvString += ColItem + ',';    });    CsvString += "\r\n";  });  CsvString = "data:application/csv," + encodeURIComponent(CsvString); var x = document.createElement("A"); x.setAttribute("href", CsvString ); x.setAttribute("download","somedata.csv"); document.body.appendChild(x); x.click();}<button onclick="exportToCsv()">export to CSV</button>Excel 看起来像这样当我使用这样的循环插入行值时,如何管理col1 、 col2 、 col3 -  for(let i=0;i<this.goalList.length;i++)  {    console.log(i,this.goalList)  var Result = [    [this.goalList[i]['name'],this.goalList[i]['desc'], this.goalList[i]['phno']]  ];    Results.push(Result);}  
查看完整描述

2 回答

?
萧十郎

TA贡献1815条经验 获得超12个赞

如果您有标题 Col1、Col2、Col3;


function downloadCsv(){

var rows= [{'col1':10,'col2':10,'col3':10},{'col1':10,'col2':10,'col3':10}, 

    {'col1':10,'col2':10,'col3':10},{'col1':10,'col2':10,'col3':10}]

    var headers = "col1,col2,col3\n";

    rows.forEach((row)=>{

      var values = []

      Object.keys(row).forEach((key)=>{        

        if(Array.isArray(row[key])){

          var type = [];

          row[key].forEach(element => {

            type.push(element.name)

          });

          console.log(type)

          values.push("\"" + type.join() + "\"")

        }else{

          typeof(row[key]) == "string" ? values.push("\"" + row[key] + "\"") : (row[key] == null ? values.push("") : values.push(row[key].toString()))

        }

      });

      headers = headers + values.join(",") + "\n"

      

    })

      download('CSV', 'Payroll.csv', 'text/csv', headers)

    }  

如您所见,我们必须知道我们的 JSON 的“键”是什么,为了动态创建它们,我们获取对象的键并循环它们,并创建我们想要的 csv 格式。


工作 JsFiddle https://jsfiddle.net/36o8cryu/


查看完整回答
反对 回复 2022-12-02
?
跃然一笑

TA贡献1826条经验 获得超6个赞

您可以初始化Results数组以包含标题。



查看完整回答
反对 回复 2022-12-02
  • 2 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信