Ent*_*etz 3 html javascript excel export-to-excel window.open
我知道,这里有关于这个主题的数百个问题,但经过一天的搜索后我仍然找不到满意的答案:
我有一个2D javascript数组,我想将其作为Excel工作表下载.
这是我到目前为止的代码的小提琴:
https://jsfiddle.net/3an24jmw/7/
下载有效,但有几个问题,经过几天的努力我无法解决:
.xls尾(.xls.xls).怎么能得到一个.xls结局?任何这些问题的任何帮助将不胜感激.
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));
}
Run Code Online (Sandbox Code Playgroud)
UPDATE
我刚刚发现一个偶然的机会,即1 2和4可以通过更换得到解决vnd.ms-excel用csv.
该文件将不再存在.xls,但可以通过Excel打开csv而不会出现问题,并且表现得像预期的那样.
只剩下问题是文件名!
更新2
经过2个完整的搜索和尝试工作日后,我找到了解决方案,我想在这里分享,以帮助任何有同样问题的人:
只需包含一个不可见<a>元素,该元素使用其download="somedata.csv"属性定义文件的有用名称.
这是我最后一个功能齐全的小提琴:
经过2个完整的搜索和尝试工作日后,我找到了解决方案,我想在这里分享,以帮助任何有同样问题的人:
只需包含一个不可见的元素,它使用download ="somedata.csv"属性为文件提供一个有用的名称:
这是我最后一个功能齐全的小提琴:
https://jsfiddle.net/3an24jmw/25/
var Results = [
["Col1", "Col2", "Col3", "Col4"],
["Data", 50, 100, 500],
["Data", -100, 20, 100],
];
exportToCsv = function() {
var CsvString = "";
Results.forEach(function(RowItem, RowIndex) {
RowItem.forEach(function(ColItem, ColIndex) {
CsvString += ColItem + ',';
});
CsvString += "\r\n";
});
CsvString = "data:application/csv," + encodeURIComponent(CsvString);
var x = document.createElement("A");
x.setAttribute("href", CsvString );
x.setAttribute("download","somedata.csv");
document.body.appendChild(x);
x.click();
}
Run Code Online (Sandbox Code Playgroud)