在Internet Explorer中脱机(客户端)创建csv文件

时间:2012-11-20 00:34:31

标签: javascript internet-explorer csv

有没有办法使用纯JavaScript(离线,本地)创建CSV文件并将该文件下载到本地文件系统?该方法应在IE9或更低版本中运行。

我尝试过downloadify,但是跨域问题使我无法在本地使用它。我还尝试创建一个Base64编码的字符串并发出text / csv数据URI,但IE似乎不支持该特定情况的数据URI。

4 个答案:

答案 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是它变得片状的地方。