【发布时间】:2017-01-13 12:30:18
【问题描述】:
我目前正在使用特定的 utf-8 编码将数据(在客户端)导出到 CSV
var csvContent = "data:text/csv;charset=utf-8,";
arr.forEach(function(infoArray, index){
var dataString = infoArray.join(",");
csvContent += index < arr.length ? dataString+ "\n" : dataString;
});
var encodedUri = encodeURI(csvContent);
var link = document.createElement("a");
link.setAttribute("href", encodedUri);
link.setAttribute("download", "data.csv");
document.body.appendChild(link);
link.click();
数据在 arr 中,看起来像:
[{'firstname':'John', 'surname':'Doe', 'city':'Paris'}, ... , {'firstname':'Johnny', 'surname':'Done', 'city':'Paris'}]
效果很好,当我在 Excel 中导入生成的文件时出现编码错误(例如 É -> É),但是当我在 Sublime Text 中打开文件时,一切看起来都很好。
【问题讨论】:
-
提示:这是加入二维数组的更简单方法:
csvContent += arr.map(arr => arr.join(',')).join('\n'); -
我用一些示例数据编辑了原始帖子,我的错
-
下面的解决方案应该可以工作。
-
您应该删除“utf-8”中的尾随逗号。
标签: javascript excel csv