javascript - 如何在 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 文件的方法,但没有成功。
解决方案
您可以使用本机 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();
推荐阅读
- sql - 如何将 SQL 转换为数据框
- r - 是否可以在 Shiny 中将 eventReactive 用于超过 1 个 checkboxInput?
- jpa - 多个与/或时的JPA查询方法逻辑
- python - 如何用非对称误差线拟合数据
- python - 如何增加神经网络中的层数?
- python - 找到到给定点的最小欧几里得距离
- docker - 在 docker 中启动 centos 时出现错误退出 (1)
- windows - rust serialport-rs 读取受阻
- python-3.x - 诗歌安装- ConnectionError | 无法建立新连接:[Errno 101] Network is unreachable' [已解决]
- java - org.springframework.beans.BeanInstantiationException:无法实例化