我知道,有数以百计的关于这里这个主题的问题,但我仍然找不到搜索了一天之后满意答案:出口2D JavaScript数组到Excel表
我有一个2D的JavaScript数组,我想以Excel工作表的形式下载。
这里是代码小提琴我走到这一步:
https://jsfiddle.net/3an24jmw/7/
下载工作,但有几个问题,我不能天后解决的努力:
- 所有项目都在Excel工作表的第一列中结束,因为Excel会将“,”分隔为数据的一部分。如何以Excel理解的方式分离元素?
- 文件名是一些神秘的代码。我怎样才能设置文件名?
- 下载的文件有双重
.xls
结尾(.xls.xls
)。如何才能得到一个.xls
结束? - Excel会告诉我每次文件可能被损坏或不安全。我如何防止这种情况?
任何这些问题的帮助将不胜感激。
exportToCsv = function() {
var CsvString = "";
Results.forEach(function(RowItem, RowIndex) {
RowItem.forEach(function(ColItem, ColIndex) {
CsvString += ColItem + ',';
});
CsvString += "\r\n";
});
window.open('data:application/vnd.ms-excel,' + encodeURIComponent(CsvString));
}
UPDATE
我只是偶然发现,即1 2和4可以通过csv
更换vnd.ms-excel
来解决。
该文件不再是.xls
,但csv可以通过Excel打开,没有问题,并且表现得像预期的那样。
只剩下的问题是文件名!
更新2
最后经过2周搜索和尝试的完整的工作日,我找到了解决方案,我想在这里分享,帮助别人同样的问题:
简单地包括隐形<a>
元素,该元素使用其属性download="somedata.csv"
定义该文件的有用名称。
这是我最后的和功能齐全的小提琴:
https://jsfiddle.net/3an24jmw/25/
感谢您的建议,但在小提琴中为您工作? 当我尝试它时,工作表的第一行被替换为sep =, –
我的不好,错误的双引号。现在修复。 – Bas