有没有办法使用纯JavaScript(离线,本地)创建CSV文件并将该文件下载到本地文件系统?该方法应在IE9或更低版本中运行。
我尝试过downloadify,但是跨域问题使我无法在本地使用它。我还尝试创建一个Base64编码的字符串并发出text / csv数据URI,但IE似乎不支持该特定情况的数据URI。
答案 0 :(得分:5)
如果您想使用正确的utf8在excel 2013中打开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>
答案 1 :(得分:1)
以下方法适用于IE11 +,Firefox 25+和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,可用于创建和下载文件。
答案 2 :(得分:0)
出于安全原因,不,不可能在本地创建文件并将其保存到用户的文件系统。 JavaScript根本不允许它。该文件需要在服务器端创建,用户需要下载它。
编辑:实际上,您可以使用HTML5访问本地文件系统,但它显示为IE9 doesn't support the File API。
答案 3 :(得分:0)
您可以将data
链接用于非IE浏览器,然后使用IFrame
使用document.execCommand
用于Internet Explorer。
我在这里有更多细节: https://stackoverflow.com/a/26003382/378151
我在IE9-IE11上测试过它。我不知道下面的兼容性是什么,它看起来像no one else really knows either。如果我猜,我打赌IE 8支持这个和IE 6&amp; 7是它变得片状的地方。