首页 > 解决方案 > 如何在 JavaScript 中正确导出为 CSV?

问题描述

我有一个 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();
}

这是它的样子:

输出

这是我期待的输出:

期望的输出

我究竟做错了什么?任何帮助,将不胜感激。

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

标签: javascriptcsvexport-to-csv

解决方案


您可以使用本机 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();

推荐阅读