我知道,有數以百計的關於這裏這個主題的問題,但我仍然找不到搜索了一天之後滿意答案:出口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