以CSV格式导出数据在IE Edge,iPad /移动设备上无法正常工作的所有浏览器和野生动物园

时间:2018-07-09 05:54:15

标签: javascript jquery ios csv internet-explorer

以CSV格式导出数据在IE Edge,Ipad /移动设备上的所有浏览器和野生动物园均不可用

_csvPlugin: function(JSONData, ReportTitle, ShowLabel) {

    function msieversion() {
        var ua = window.navigator.userAgent;
        var msie = ua.indexOf("MSIE ");
        if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer, return true
        {
            return true;
        } else { // If another browser,
            return false;
        }
        return false;
    }
    //If JSONData is not an object then JSON.parse will parse the JSON string in an Object
    var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;

    var CSV = '';
    //Set Report title in first row or line

    CSV += ReportTitle + '\r\n\n';

    //This condition will generate the Label/Header
    if (ShowLabel) {
        var row = "";

        //This loop will extract the label from 1st index of on array


        for (var index in arrData[0]) {


            //Now convert each value to string and comma-seprated
            if (index == "Sub_Indicator1" || index == "Sub_Indicator2" || index.search("Indicators") != -1) {
                row += '  ' + ',';
            } else {
                row += index + ',';
            }
        }

        row = row.slice(0, -1);

        //append Label row with line break
        CSV += row + '\r\n';
    }

    //1st loop is to extract each row
    for (var i = 0; i < arrData.length; i++) {
        var row = "";

        //2nd loop will extract each column and convert it in string comma-seprated
        for (var index in arrData[i]) {
            var rtxt = arrData[i][index];
            /*if(typeof(rtxt)=='string'){
                rtxt=rtxt.replace("%u2019", "'");
            }*/
            row += '"' + rtxt + '",';
        }

        row.slice(0, row.length - 1);

        //add a line break after each row
        CSV += row + '\r\n';
    }

    if (CSV == '') {
        alert("Invalid data");
        return;
    }

    //Generate a file name
    var fileName = "MyReport_";
    //this will remove the blank-spaces from the title and replace it with an underscore
    fileName += ReportTitle.replace(/ /g, "_");

    //Initialize file format you want csv or xls

    //download(CSV, ReportTitle+".csv", "text/csv");


    if (msieversion()) {
        var IEwindow = window.open();
        IEwindow.document.write('sep=,\r\n' + CSV);
        IEwindow.document.close();
        IEwindow.document.execCommand('SaveAs', true, fileName + ".csv");
        IEwindow.close();

    } else {

        var uri = 'data:text/csv;charset=utf-8,' + escape(CSV);

        // Now the little tricky part.
        // you can use either>> window.open(uri);
        // but this will not work in some browsers
        // or you will not get the correct file extension    

        //this trick will generate a temp <a /> tag
        var link = document.createElement("a");
        link.href = uri;

        //set the visibility hidden so it will not effect on your web-layout
        link.style = "visibility:hidden";
        link.download = fileName + ".csv";

        //this part will append the anchor tag and remove it after automatic click
        document.body.appendChild(link);
        link.click();
        document.body.removeChild(link);



    }
},

我创建了_csvPlugin小部件函数,它可以在IE11,IE10,Chrome,Mozilla中使用。

  • safari 中,它会在新标签页中打开。
  • IE EDGE (台式机中的IE EDGE),它不起作用
  • 移动设备和标签页-不起作用。

我在StackOverflow中看到很多链接,但是找不到与Edge兼容的任何内容

0 个答案:

没有答案