如何在JavaScript中正确导出到CSV?

如何在JavaScript中正确导出到CSV?,javascript,csv,export-to-csv,Javascript,Csv,Export To Csv,我有一个JavaScript函数,可以下载CVS文件。当我在excel中打开此文件时,所有内容都放在同一列中 这是我的代码: function convertToCSV(dataArray) { var csvContent = "data:text/csv;charset=utf-8,"; dataArray.forEach(function(infoArray, index) { dataString = infoArray.join(",");

我有一个JavaScript函数,可以下载CVS文件。当我在excel中打开此文件时,所有内容都放在同一列中

这是我的代码:

function convertToCSV(dataArray) {
   var csvContent = "data:text/csv;charset=utf-8,";

   dataArray.forEach(function(infoArray, index)
   {
      dataString = infoArray.join(",");
      csvContent += index < dataArray.length ? dataString+ "\n" : dataString;
   }); 

   var encodedUri = encodeURI(csvContent);
   var link = document.createElement("a");
   link.setAttribute("href", encodedUri);
   link.setAttribute("download", "download.csv");
   document.body.appendChild(link);
   link.click();
}
函数convertToCSV(数据数组){
var csvContent=“数据:文本/csv;字符集=utf-8,”;
forEach(函数(infoArray,index)
{
dataString=infoArray.join(“,”);
csvContent+=索引
这就是它看起来的样子:

这是我期望的输出:

我做错了什么?任何帮助都将不胜感激


注意:我一直在寻找一种直接导出到.xlsx或.xls文件的方法,但我没有成功

您可以使用mongo xlsx模块将数据导出到xlsx文件

var mongoXlsx = require('mongo-xlsx');
var data=dataArray;
var model=mongoXlsx.buildDynamicModel(data);
mongoXlsx.mongoData2Xlsx(data, model, function(err, data) {
console.log("data",data);
console.log('File saved as:', data.fullPath); 
});

希望这对您有所帮助

您可以非常轻松地使用本机js完成此操作,如下所示:

let text = '';
dataArray.map(arr => text += arr.join(',') + '\r\n');

let link = document.createElement('a');
link.setAttribute('href', 'data:text/csv;charset=utf-8,' + escape(text)); 
link.setAttribute('download', 'download.csv');
document.body.appendChild(link);
link.click();

这可能会有帮助:我猜您的分隔符是“;”而不是“,”。尝试使用dataString=infoArray.join(“;”);相反不幸的是,这是按区域配置进行的。