有沒有辦法使用純JavaScript(離線,本地)創建CSV文件並將該文件下載到本地文件系統?該方法應該在IE9或更低版本中工作。在Internet Explorer中離線創建csv文件(客戶端)
我試過downloadify,但跨域問題阻止我在本地使用它。我也嘗試創建一個Base64編碼的字符串併發布text/csv數據URI,但IE似乎不支持該特定情況下的數據URI。
有沒有辦法使用純JavaScript(離線,本地)創建CSV文件並將該文件下載到本地文件系統?該方法應該在IE9或更低版本中工作。在Internet Explorer中離線創建csv文件(客戶端)
我試過downloadify,但跨域問題阻止我在本地使用它。我也嘗試創建一個Base64編碼的字符串併發布text/csv數據URI,但IE似乎不支持該特定情況下的數據URI。
出於安全原因,不可以在本地創建文件並將其保存到用戶的文件系統。 JavaScript根本不允許它。該文件將需要創建服務器端,用戶將需要下載它。
編輯:其實,你可以訪問使用HTML5本地文件系統,但它似乎IE9 doesn't support the File API。
下面的方法在IE11 +,25 +的Firefox和Chrome 30+作品:
<a id="export" class="myButton" download="" href="#">export</a>
<script>
function createDownloadLink(anchorSelector, str, fileName){
if(window.navigator.msSaveOrOpenBlob) {
var fileData = [str];
blobObject = new Blob(fileData);
$(anchorSelector).click(function(){
window.navigator.msSaveOrOpenBlob(blobObject, fileName);
});
} else {
var url = "data:text/plain;charset=utf-8," + encodeURIComponent(str);
$(anchorSelector).attr("download", fileName);
$(anchorSelector).attr("href", url);
}
}
$(function() {
var str = "hi,file";
createDownloadLink("#export",str,"file.txt");
});
</script>
在操作中查看:JS Fiddle
Firefox和Chrome支持數據URI進行導航,這使我們能夠創建導航到數據URI的文件,而IE不支持它的安全目的。
另一方面,IE有保存blob的API,可用於創建和下載文件。
我只是在IE 11上測試過它,它不工作。 Chrome和Firefox正在運行 –
針對IE11的新更新可能無法從IFrame中保存Blob,並且JSFiddle通過iframe運行該頁面。但是,這仍然可以在普通頁面上運行。請參閱上述示例的JSFiddle演示頁面:http://jsfiddle.net/Kg7eA/show/ –
請參閱http://stackoverflow.com/questions/21893463/javascript-to-download-string它在IE上運行得非常好。只需以.csv擴展名重命名該文件,並將格式化的csv數據推送到該文件中即可。我正在認真考慮告訴我的客戶,我的先決條件是沒有IE –
如果你想在Excel 2013與正確UTF8打開CSV,你應該添加UTF8 BOM到DINESH這樣ygv代碼:
<a id="export" class="myButton" download="" href="#">export</a>
<script>
function createDownloadLink(anchorSelector, str, fileName){
if(window.navigator.msSaveOrOpenBlob) {
var fileData = ['\ufeff'+str];
blobObject = new Blob(fileData);
$(anchorSelector).click(function(){
window.navigator.msSaveOrOpenBlob(blobObject, fileName);
});
} else {
var url = "data:text/plain;charset=utf-8,%EF%BB%BF" + encodeURIComponent(str);
$(anchorSelector).attr("download", fileName);
$(anchorSelector).attr("href", url);
}
}
$(function() {
var str = "hi,file";
createDownloadLink("#export",str,"file.txt");
});
</script>
謝謝Gergo,這節省了我的一天。 –
您可以使用非IE瀏覽器的data
鏈接,然後回到IFrame
與document.execCommand
爲Internet Explorer。
我有更多的細節在這裏: https://stackoverflow.com/a/26003382/378151
我已經測試了IE9,IE11。我不知道下面的兼容性是什麼,它看起來像no one else really knows either。如果我猜測,我打賭,IE 8支持這個,IE 6 & 7就是它的片斷。
你可以在IE的客戶端VBScript中做到這一點。雖然安全設置需要更改以允許這樣做。 –
請看看我的回答:http://stackoverflow.com/a/9686960/1169519。 – Teemu
@Teemu明天我肯定會嘗試一下,它看起來像一個小小的瀏覽器/功能檢測,我可以同時使用HTML5文件API和HTA以具有跨瀏覽器兼容的本地應用程序! – Moses