如何将JavaScript数组信息导出到csv(在客户端)?

Sam*_*007 460 javascript csv export client-side dojo-1.8

我知道有很多这方面的问题,但我需要使用JavaScript来做到这一点.我正在使用Dojo 1.8并拥有数组中的所有属性信息,如下所示:

[["name1", "city_name1", ...]["name2", "city_name2", ...]]
Run Code Online (Sandbox Code Playgroud)

知道如何将其导出到CSV客户端吗?

Def*_*ult 761

您可以在本机JavaScript中执行此操作.您必须将数据解析为正确的CSV格式(假设您正在使用数组数组,如问题中所述):

const rows = [
    ["name1", "city1", "some other info"],
    ["name2", "city2", "more info"]
];

let csvContent = "data:text/csv;charset=utf-8,";

rows.forEach(function(rowArray) {
    let row = rowArray.join(",");
    csvContent += row + "\r\n";
});
Run Code Online (Sandbox Code Playgroud)

或更短的方式(使用箭头功能):

const rows = [
    ["name1", "city1", "some other info"],
    ["name2", "city2", "more info"]
];

let csvContent = "data:text/csv;charset=utf-8," 
    + rows.map(e => e.join(",")).join("\n");
Run Code Online (Sandbox Code Playgroud)

然后您可以使用JavaScript window.openencodeURI函数来下载CSV文件,如下所示:

var encodedUri = encodeURI(csvContent);
window.open(encodedUri);
Run Code Online (Sandbox Code Playgroud)

编辑:

如果要为文件指定特定名称,则必须执行一些不同的操作,因为不支持使用该window.open方法访问数据URI .为了实现这一点,您可以创建一个隐藏的<a>DOM节点并设置其download属性,如下所示:

var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "my_data.csv");
document.body.appendChild(link); // Required for FF

link.click(); // This will download the data file named "my_data.csv".
Run Code Online (Sandbox Code Playgroud)

  • 这适用于~7,000行.但是开始给出这个错误:**NETWORK_INVALID_REQUEST**.是否有其他人也面临这个问题?`encodeURIComponent()`函数有什么数据上限吗?我使用Chrome作为浏览器. (17认同)
  • 我不得不添加`document.body.appendChild(link);`来获得FF的全力支持. (14认同)
  • 这个答案是错误的:对于`data = [["Hello,world"]]`的情况,它会失败.当输出一列时,它将输出两列. (9认同)
  • @Abhidemon答案是你必须使用一个blob类型的东西,然后它才能正常工作,例如:blob = new Blob([csvContent],{type:"text/csv"}); href = window.URL.createObjectURL(blob); 更多细节:/sf/answers/1353022401/ (9认同)
  • 据我所知,使用`window.open`无法做到这一点.但是,您可以创建一个隐藏的链接,其"download"属性设置为您想要的文件名.然后"点击"此链接将以您希望的名义下载文件,我将其添加到我的答案中. (4认同)
  • @Abhidemon 我有同样的问题。不知道如何下载大型 csv。 (2认同)
  • 会发生什么,如果数组包含一些带逗号的数据.在这种情况下,我认为它会失败 (2认同)
  • 我的CSV是12874767个字符,所以我做的略有不同:var csv = jsonArrayToCsv(_filteredForExport); var blob = new Blob([csv],{type:'text / csv; charset = utf-8;'}); var blobUrl = URL.createObjectURL(blob); window.open(blobUrl); 或者只是将blogUrl输出到控制台,然后单击它。 (2认同)
  • 如果你想支持Excel读取UTF-8字符,你需要在文件开头添加BOM。`"\ufeff"+csvContent` (2认同)

Xav*_*ohn 227

根据上面的答案,我创建了这个功能,我已经在IE 11,Chrome 36和Firefox 29上进行了测试

function exportToCsv(filename, rows) {
    var processRow = function (row) {
        var finalVal = '';
        for (var j = 0; j < row.length; j++) {
            var innerValue = row[j] === null ? '' : row[j].toString();
            if (row[j] instanceof Date) {
                innerValue = row[j].toLocaleString();
            };
            var result = innerValue.replace(/"/g, '""');
            if (result.search(/("|,|\n)/g) >= 0)
                result = '"' + result + '"';
            if (j > 0)
                finalVal += ',';
            finalVal += result;
        }
        return finalVal + '\n';
    };

    var csvFile = '';
    for (var i = 0; i < rows.length; i++) {
        csvFile += processRow(rows[i]);
    }

    var blob = new Blob([csvFile], { type: 'text/csv;charset=utf-8;' });
    if (navigator.msSaveBlob) { // IE 10+
        navigator.msSaveBlob(blob, filename);
    } else {
        var link = document.createElement("a");
        if (link.download !== undefined) { // feature detection
            // Browsers that support HTML5 download attribute
            var url = URL.createObjectURL(blob);
            link.setAttribute("href", url);
            link.setAttribute("download", filename);
            link.style.visibility = 'hidden';
            document.body.appendChild(link);
            link.click();
            document.body.removeChild(link);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

例如:https: //jsfiddle.net/jossef/m3rrLzk0/

  • 可以在`link`的`link`下载!== undefined`中回退到`window.open`. (5认同)
  • 这一回应是迄今为止最好的回应。它包括带有特殊字符和括号的情况。 (3认同)
  • 这是一段很好的代码.您是否愿意在比CC-BY-SA的SO默认更自由的情况下获得许可?例如,CC0,MIT,BSD,Apache,X11...http://meta.stackexchange.com/questions/12527/do-i-have-to-worry-about-copyright-issues-for-code-posted-on-stack-overflow (2认同)
  • 我使用了此答案的下载部分,它在Chrome上运行良好,谢谢! (2认同)

kol*_*pto 135

简约但功能齐全的解决方案:)

/** Convert a 2D array into a CSV string
 */
function arrayToCsv(data){
  return data.map(row =>
    row
    .map(String)  // convert every value to String
    .map(v => v.replaceAll('"', '""'))  // escape double quotes
    .map(v => `"${v}"`)  // quote it
    .join(',')  // comma-separated
  ).join('\r\n');  // rows starting on new lines
}
Run Code Online (Sandbox Code Playgroud)

例子:

let csv = arrayToCsv([
  [1, '2', '"3"'],
  [true, null, undefined],
]);
Run Code Online (Sandbox Code Playgroud)

结果:

"1","2","""3"""
"true","null","undefined"
Run Code Online (Sandbox Code Playgroud)

现在将其下载为文件:

"1","2","""3"""
"true","null","undefined"
Run Code Online (Sandbox Code Playgroud)

下载它:


/** Download contents as a file
 * Source: https://stackoverflow.com/questions/14964035/how-to-export-javascript-array-info-to-csv-on-client-side
 */
function downloadBlob(content, filename, contentType) {
  // Create a blob
  var blob = new Blob([content], { type: contentType });
  var url = URL.createObjectURL(blob);

  // Create a link to download it
  var pom = document.createElement('a');
  pom.href = url;
  pom.setAttribute('download', filename);
  pom.click();
}
Run Code Online (Sandbox Code Playgroud)

保存对话框

结果文件

  • 这已经晚了,但确实是最好的答案。 (17认同)
  • 社区应该以此为例 A :-) ,分隔符,附件,转义符(字符)是可以用来存储格式字符的通用术语。(这里“”既是转义也是封闭 - 它并不总是这样,你必须将此信息传输到 CSV 接收器) (3认同)

Arn*_*ekk 72

此解决方案适用于Internet Explorer 10 +,Edge,新旧版本的Chrome,FireFox,Safari,++

接受的答案不适用于IE和Safari.

// Example data given in question text
var data = [
  ['name1', 'city1', 'some other info'],
  ['name2', 'city2', 'more info']
];

// Building the CSV from the Data two-dimensional array
// Each column is separated by ";" and new line "\n" for next row
var csvContent = '';
data.forEach(function(infoArray, index) {
  dataString = infoArray.join(';');
  csvContent += index < data.length ? dataString + '\n' : dataString;
});

// The download function takes a CSV string, the filename and mimeType as parameters
// Scroll/look down at the bottom of this snippet to see how download is called
var download = function(content, fileName, mimeType) {
  var a = document.createElement('a');
  mimeType = mimeType || 'application/octet-stream';

  if (navigator.msSaveBlob) { // IE10
    navigator.msSaveBlob(new Blob([content], {
      type: mimeType
    }), fileName);
  } else if (URL && 'download' in a) { //html5 A[download]
    a.href = URL.createObjectURL(new Blob([content], {
      type: mimeType
    }));
    a.setAttribute('download', fileName);
    document.body.appendChild(a);
    a.click();
    document.body.removeChild(a);
  } else {
    location.href = 'data:application/octet-stream,' + encodeURIComponent(content); // only this mime type is supported
  }
}

download(csvContent, 'dowload.csv', 'text/csv;encoding:utf-8');
Run Code Online (Sandbox Code Playgroud)

运行代码段会将模拟数据下载为csv

积分dandavis /sf/answers/1146446941/

  • 注意:函数中有一个拼写错误,它实际上是`URL.createObjectURL`(以`URL`而非`Url`结尾). (2认同)

Uxo*_*ith 35

我来到这里寻找更多的RFC 4180合规性,但我找不到实现,所以我根据自己的需要制作了一个(可能效率低下).我以为我会和大家分享.

var content = [['1st title', '2nd title', '3rd title', 'another title'], ['a a a', 'bb\nb', 'cc,c', 'dd"d'], ['www', 'xxx', 'yyy', 'zzz']];

var finalVal = '';

for (var i = 0; i < content.length; i++) {
    var value = content[i];

    for (var j = 0; j < value.length; j++) {
        var innerValue =  value[j]===null?'':value[j].toString();
        var result = innerValue.replace(/"/g, '""');
        if (result.search(/("|,|\n)/g) >= 0)
            result = '"' + result + '"';
        if (j > 0)
            finalVal += ',';
        finalVal += result;
    }

    finalVal += '\n';
}

console.log(finalVal);

var download = document.getElementById('download');
download.setAttribute('href', 'data:text/csv;charset=utf-8,' + encodeURIComponent(finalVal));
download.setAttribute('download', 'test.csv');
Run Code Online (Sandbox Code Playgroud)

希望这将有助于将来的人.这结合了CSV的编码以及下载文件的能力.在我的jsfiddle的例子中.您可以下载该文件(假设是HTML 5浏览器)或在控制台中查看输出.

更新:

Chrome现在似乎无法命名文件.我不确定发生了什么或如何修复它,但每当我使用此代码(包括jsfiddle)时,下载的文件现在都被命名download.csv.


Dza*_*rek 32

来自@Default的解决方案在Chrome上运行完美(非常感谢!)但我遇到了IE的问题.

这是一个解决方案(适用于IE10):

var csvContent=data; //here we load our csv data 
var blob = new Blob([csvContent],{
    type: "text/csv;charset=utf-8;"
});

navigator.msSaveBlob(blob, "filename.csv")
Run Code Online (Sandbox Code Playgroud)


小智 18

在Chrome 35更新中,下载属性行为已更改.

https://code.google.com/p/chromium/issues/detail?id=373182

要在chrome中使用它,请使用它

var pom = document.createElement('a');
var csvContent=csv; //here we load our csv data 
var blob = new Blob([csvContent],{type: 'text/csv;charset=utf-8;'});
var url = URL.createObjectURL(blob);
pom.href = url;
pom.setAttribute('download', 'foo.csv');
pom.click();
Run Code Online (Sandbox Code Playgroud)

  • 你也可以检查这个:https://github.com/mholt/PapaParse/issues/175#issuecomment-201308792 (2认同)

Ser*_*dan 17

适用于所有语言

        function convertToCsv(fName, rows) {
        var csv = '';
        for (var i = 0; i < rows.length; i++) {
            var row = rows[i];
            for (var j = 0; j < row.length; j++) {
                var val = row[j] === null ? '' : row[j].toString();
                val = val.replace(/\t/gi, " ");
                if (j > 0)
                    csv += '\t';
                csv += val;
            }
            csv += '\n';
        }

        // for UTF-16
        var cCode, bArr = [];
        bArr.push(255, 254);
        for (var i = 0; i < csv.length; ++i) {
            cCode = csv.charCodeAt(i);
            bArr.push(cCode & 0xff);
            bArr.push(cCode / 256 >>> 0);
        }

        var blob = new Blob([new Uint8Array(bArr)], { type: 'text/csv;charset=UTF-16LE;' });
        if (navigator.msSaveBlob) {
            navigator.msSaveBlob(blob, fName);
        } else {
            var link = document.createElement("a");
            if (link.download !== undefined) {
                var url = window.URL.createObjectURL(blob);
                link.setAttribute("href", url);
                link.setAttribute("download", fName);
                link.style.visibility = 'hidden';
                document.body.appendChild(link);
                link.click();
                document.body.removeChild(link);
                window.URL.revokeObjectURL(url);
            }
        }
    }



    convertToCsv('download.csv', [
        ['Order', 'Language'],
        ['1', 'English'],
        ['2', 'Español'],
        ['3', 'Français'],
        ['4', 'Português'],
        ['5', '?eština'],
        ['6', 'Slovenš?ina'],
        ['7', 'Ti?ng Vi?t'],
        ['8', 'Türkçe'],
        ['9', 'Norsk bokmål'],
        ['10', '????????'],
        ['11', '?????????'],
        ['12', '???????'],
        ['13', '??????????'],
        ['14', '???????'],
        ['15', '???????'],
        ['16', '????'],
        ['17', '??????'],
        ['18', '?????'],
        ['19', '???'],
        ['20', '???????'],
        ['21', '??'],
        ['22', '???'],
        ['23', '???'],
    ])
Run Code Online (Sandbox Code Playgroud)


Mad*_*jee 12

你去:

<!doctype html>  
<html>  
<head></head>  
<body>
<a href='#' onclick='downloadCSV({ filename: "stock-data.csv" });'>Download CSV</a>

<script type="text/javascript">  
    var stockData = [
        {
            Symbol: "AAPL",
            Company: "Apple Inc.",
            Price: "132.54"
        },
        {
            Symbol: "INTC",
            Company: "Intel Corporation",
            Price: "33.45"
        },
        {
            Symbol: "GOOG",
            Company: "Google Inc",
            Price: "554.52"
        },
    ];

    function convertArrayOfObjectsToCSV(args) {
        var result, ctr, keys, columnDelimiter, lineDelimiter, data;

        data = args.data || null;
        if (data == null || !data.length) {
            return null;
        }

        columnDelimiter = args.columnDelimiter || ',';
        lineDelimiter = args.lineDelimiter || '\n';

        keys = Object.keys(data[0]);

        result = '';
        result += keys.join(columnDelimiter);
        result += lineDelimiter;

        data.forEach(function(item) {
            ctr = 0;
            keys.forEach(function(key) {
                if (ctr > 0) result += columnDelimiter;

                result += item[key];
                ctr++;
            });
            result += lineDelimiter;
        });

        return result;
    }

    window.downloadCSV = function(args) {
        var data, filename, link;

        var csv = convertArrayOfObjectsToCSV({
            data: stockData
        });
        if (csv == null) return;

        filename = args.filename || 'export.csv';

        if (!csv.match(/^data:text\/csv/i)) {
            csv = 'data:text/csv;charset=utf-8,' + csv;
        }
        data = encodeURI(csv);

        link = document.createElement('a');
        link.setAttribute('href', data);
        link.setAttribute('download', filename);
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);
       }
</script>  
</body>  
</html>  
Run Code Online (Sandbox Code Playgroud)


小智 7

//It work in Chrome and IE ... I reviewed and readed a lot of answer. then i used it and tested in both ... 

var link = document.createElement("a");

if (link.download !== undefined) { // feature detection
    // Browsers that support HTML5 download attribute
    var blob = new Blob([CSV], { type: 'text/csv;charset=utf-8;' });
    var url = URL.createObjectURL(blob);            
    link.setAttribute("href", url);
    link.setAttribute("download", fileName);
    link.style = "visibility:hidden";
}

if (navigator.msSaveBlob) { // IE 10+
   link.addEventListener("click", function (event) {
     var blob = new Blob([CSV], {
       "type": "text/csv;charset=utf-8;"
     });
   navigator.msSaveBlob(blob, fileName);
  }, false);
}

document.body.appendChild(link);
link.click();
document.body.removeChild(link);

//Regards
Run Code Online (Sandbox Code Playgroud)


tot*_*ack 7

有很多好的答案的老问题,但这里有另一个简单的选项,它依赖于两个流行的库来完成它。一些答案提到了Papa Parse,但为下载部分推出了自己的解决方案。结合 Papa Parse 和FileSaver.js,您可以尝试以下操作:

const dataString = Papa.unparse(data, config);
const blob = new Blob([dataString], { type: 'text/csv;charset=utf-8' });
FileSaver.saveAs(blob, 'myfile.csv');
Run Code Online (Sandbox Code Playgroud)

此处描述config选项。unparse


小智 6

使用csv数据创建一个blob .ie var blob = new Blob([data], type:"text/csv");

如果浏览器支持保存blob if window.navigator.mSaveOrOpenBlob)===true,则使用以下命令保存csv数据: window.navigator.msSaveBlob(blob, 'filename.csv')

如果浏览器不支持保存和打开blob,则将csv数据保存为:

var downloadLink = document.createElement('<a></a>');
downloadLink.attr('href', window.URL.createObjectURL(blob));
downloadLink.attr('download', filename);
downloadLink.attr('target', '_blank');
document.body.append(downloadLink);
Run Code Online (Sandbox Code Playgroud)

完整代码片段:

var filename = 'data_'+(new Date()).getTime()+'.csv';
var charset = "utf-8";
var blob = new Blob([data], {
     type: "text/csv;charset="+ charset + ";"
});
if (window.navigator.msSaveOrOpenBlob) {
     window.navigator.msSaveBlob(blob, filename);
} else {
    var downloadLink = document.element('<a></a>');
    downloadLink.attr('href', window.URL.createObjectURL(blob));
    downloadLink.attr('download', filename);
    downloadLink.attr('target', '_blank');  
    document.body.append(downloadLink); 
    downloadLink[0].click(); 
}
Run Code Online (Sandbox Code Playgroud)


Kon*_*tin 6

这里有两个问题:

  1. 如何将数组转换为 csv 字符串
  2. 如何将该字符串保存到文件中

第一个问题的所有答案(除了 Milimetric 的那个)在这里似乎有点矫枉过正。而 Milimetric 的一个不包括替代要求,例如用引号包围字符串或转换对象数组。

以下是我对此的看法:

对于一个简单的 csv,一个 map() 和一个 join() 就足够了:

    var test_array = [["name1", 2, 3], ["name2", 4, 5], ["name3", 6, 7], ["name4", 8, 9], ["name5", 10, 11]];
    var csv = test_array.map(function(d){
        return d.join();
    }).join('\n');

    /* Results in 
    name1,2,3
    name2,4,5
    name3,6,7
    name4,8,9
    name5,10,11
Run Code Online (Sandbox Code Playgroud)

此方法还允许您在内连接中指定逗号以外的列分隔符。例如一个标签:d.join('\t')

另一方面,如果您想正确地做到这一点并将字符串括在引号“”中,那么您可以使用一些 JSON 魔法:

var csv = test_array.map(function(d){
       return JSON.stringify(d);
    })
    .join('\n') 
    .replace(/(^\[)|(\]$)/mg, ''); // remove opening [ and closing ]
                                   // brackets from each line 

/* would produce
"name1",2,3
"name2",4,5
"name3",6,7
"name4",8,9
"name5",10,11
Run Code Online (Sandbox Code Playgroud)

如果你有像这样的对象数组:

var data = [
  {"title": "Book title 1", "author": "Name1 Surname1"},
  {"title": "Book title 2", "author": "Name2 Surname2"},
  {"title": "Book title 3", "author": "Name3 Surname3"},
  {"title": "Book title 4", "author": "Name4 Surname4"}
];

// use
var csv = data.map(function(d){
        return JSON.stringify(Object.values(d));
    })
    .join('\n') 
    .replace(/(^\[)|(\]$)/mg, '');
Run Code Online (Sandbox Code Playgroud)


Abd*_*UMI 6

ES6 的一个箭头函数:

const dataToCsvURI = (data) => encodeURI(
`data:text/csv;charset=utf-8,${data.map((row, index) =>  row.join(',')).join(`\n`)}`
);
Run Code Online (Sandbox Code Playgroud)

然后 :

window.open(
  dataToCsvURI(
   [["name1", "city_name1"/*, ...*/], ["name2", "city_name2"/*, ...*/]]
  )
);
Run Code Online (Sandbox Code Playgroud)

万一有人需要这个用于react-csv有没有

  • `react-csv` 库就像一个魅力。任何使用模块的人的绝佳解决方案。 (3认同)

Vig*_*ian 6

您可以使用下面的代码使用Javascript将数组导出到CSV文件。

这也处理特殊字符部分

var arrayContent = [["Séjour 1, é,í,ú,ü,?"],["Séjour 2, é,í,ú,ü,?"]];
var csvContent = arrayContent.join("\n");
var link = window.document.createElement("a");
link.setAttribute("href", "data:text/csv;charset=utf-8,%EF%BB%BF" + encodeURI(csvContent));
link.setAttribute("download", "upload_data.csv");
link.click(); 
Run Code Online (Sandbox Code Playgroud)

是工作jsfiddle的链接


dab*_*eng 6

以下是原生js解决方案。

function export2csv() {
  let data = "";
  const tableData = [];
  const rows = [
    ['111', '222', '333'],
    ['aaa', 'bbb', 'ccc'],
    ['AAA', 'BBB', 'CCC']
  ];
  for (const row of rows) {
    const rowData = [];
    for (const column of row) {
      rowData.push(column);
    }
    tableData.push(rowData.join(","));
  }
  data += tableData.join("\n");
  const a = document.createElement("a");
  a.href = URL.createObjectURL(new Blob([data], { type: "text/csv" }));
  a.setAttribute("download", "data.csv");
  document.body.appendChild(a);
  a.click();
  document.body.removeChild(a);
}
Run Code Online (Sandbox Code Playgroud)
<button onclick="export2csv()">Export array to csv file</button>
Run Code Online (Sandbox Code Playgroud)


Joh*_*Rix 5

这里有很多将数据转换为CSV的自带解决方案,但是几乎所有这些解决方案在正确格式化数据类型方面都会有各种警告,而不会引起Excel等问题。

为什么不使用经过验证的东西:爸爸解析

Papa.unparse(data[, config])
Run Code Online (Sandbox Code Playgroud)

然后,将其与此处的本地下载解决方案之一结合即可。@ArneHB的那个看起来不错。


Gle*_*son 5

人们正在尝试创建自己的csv字符串,该字符串在特殊情况下会失败,例如特殊字符等,这肯定是一个已解决的问题,对吗?

papaparse-用于JSON到CSV编码。Papa.unparse()

import Papa from "papaparse";

const downloadCSV = (args) => {  

  let filename = args.filename || 'export.csv';
  let columns = args.columns || null;

  let csv = Papa.unparse({ data: args.data, fields: columns})
  if (csv == null) return;

  var blob = new Blob([csv]);
  if (window.navigator.msSaveOrOpenBlob)  // IE hack; see http://msdn.microsoft.com/en-us/library/ie/hh779016.aspx
      window.navigator.msSaveBlob(blob, args.filename);
  else
  {
      var a = window.document.createElement("a");
      a.href = window.URL.createObjectURL(blob, {type: "text/plain"});
      a.download = filename;
      document.body.appendChild(a);
      a.click();  // IE: "Access is denied"; see: https://connect.microsoft.com/IE/feedback/details/797361/ie-10-treats-blob-url-as-cross-origin-and-denies-access
      document.body.removeChild(a);
  }

}
Run Code Online (Sandbox Code Playgroud)

用法示例

downloadCSV({ 
  filename: 'filename.csv',
  data: [{'a': '1', 'b': 2'}],
  columns: ['a','b']
});
Run Code Online (Sandbox Code Playgroud)

https://github.com/mholt/PapaParse/issues/175-有关浏览器支持的讨论,请参见此评论。


小智 5

来自反应管理

function downloadCsv(csv, filename) {
    const fakeLink = document.createElement('a');
    fakeLink.style.display = 'none';
    document.body.appendChild(fakeLink);
    const blob = new Blob([csv], { type: 'text/csv' });
    if (window.navigator && window.navigator.msSaveOrOpenBlob) {
        // Manage IE11+ & Edge
        window.navigator.msSaveOrOpenBlob(blob, `${filename}.csv`);
    } else {
        fakeLink.setAttribute('href', URL.createObjectURL(blob));
        fakeLink.setAttribute('download', `${filename}.csv`);
        fakeLink.click();
    }
};

downloadCsv('Hello World', 'any-file-name.csv');
Run Code Online (Sandbox Code Playgroud)