Javascript:将包含多行的字符串写入csv文件以供下载

Javascript:将包含多行的字符串写入csv文件以供下载,javascript,csv,Javascript,Csv,我正在尝试将一个包含多行(来自服务器端)的字符串写入csv文件,供用户在浏览器中下载。但是,使用我的代码,我只得到一行中包含所有数据的csv文件。 这是我的密码: function getReport(){ var report = "a,b,c,d;1,2,3,4;"; //console.log(report); var csvcontent=""; while (report.indexOf(";")!=-1) { csvconten

我正在尝试将一个包含多行(来自服务器端)的字符串写入csv文件,供用户在浏览器中下载。但是,使用我的代码,我只得到一行中包含所有数据的csv文件。 这是我的密码:

function getReport(){
    var report = "a,b,c,d;1,2,3,4;";
    //console.log(report);
    var csvcontent="";
    while (report.indexOf(";")!=-1)
    {
        csvcontent=csvcontent+ report.substring(0,report.indexOf(";"))+"\n";
        report=report.substring(report.indexOf(";")+1);
    }

    console.log(csvcontent);
    var a = document.createElement('a');
    a.href     = 'data:attachment/csv,' + csvcontent;
    a.target   = '_blank';
    a.download = 'myFile.csv';
    document.body.appendChild(a);
    //console.log("ok");
    a.click();
}
在下载的csv文件中,所有数据将显示在一行a、b、c、d1、2、3、4中。 有人能告诉我如何解决这个问题吗? 提前谢谢

试试这个
a.href='数据:文本/csv;字符集=utf-8;base64,“+window.btoa(csvcontent)

它将数据转换为base64,base64正确编码新行字符。我真的不确定你的方法为什么不起作用。一个警告是,
btoa
功能在较旧的浏览器中不起作用查看这个问题了解更多信息

hmm,这个方法实际上是有效的。因此,如果不转换为base 64,程序就无法识别新行字符?@Koshien我不确定,但在创建数据URI的某个地方,新行字符会被删除,除非您执行类似于base 64的编码操作。