JSON數(shù)據(jù)導出Excel(純js實現(xiàn)、兼容IE瀏覽器)

只在谷歌瀏覽器測試通過董习,ie瀏覽器測試不行

<html> 
<head>  
<meta http-equiv="content-type" content="text/html; charset=utf-8">  
<script type="text/javascript" src="jquery.min.js"></script>  
<script type="text/javascript">  
    $(document).ready(function(){  
        $('#wwo').click(function(){  
            var data = {"title":[{"value":"集團", "type":"ROW_HEADER_HEADER", "datatype":"string"}, {"value":"日期", "type":"ROW_HEADER_HEADER", "datatype":"string"}],"data":[[{"value":"好好", "type":"ROW_HEADER"}, {"value":"2015-08-24", "type":"ROW_HEADER"}]]};  
            if(data == '')  
                return;  
            JSONToExcelConvertor(data.data, "Report", data.title);  
        });  
    });  

    function JSONToExcelConvertor(JSONData, FileName, ShowLabel) {  
        //先轉(zhuǎn)化json  
        var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;  
          
        var excel = '<table>';      
          
        //設(shè)置表頭  
        var row = "<tr>";  
        for (var i = 0, l = ShowLabel.length; i < l; i++) {  
            row += "<td>" + ShowLabel[i].value + '</td>';  
        }  
          
          
        //換行  
        excel += row + "</tr>";  
          
        //設(shè)置數(shù)據(jù)  
        for (var i = 0; i < arrData.length; i++) {  
            var row = "<tr>";  
              
            for (var index in arrData[i]) {  
                var value = arrData[i][index].value === "." ? "" : arrData[i][index].value;  
                row += '<td>' + value + '</td>';  
            }  
              
            excel += row + "</tr>";  
        }  

        excel += "</table>";  

        var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:excel' xmlns='http://www.w3.org/TR/REC-html40'>";  
        excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel; charset=UTF-8">';  
        excelFile += '<meta http-equiv="content-type" content="application/vnd.ms-excel';  
        excelFile += '; charset=UTF-8">';  
        excelFile += "<head>";  
        excelFile += "<!--[if gte mso 9]>";  
        excelFile += "<xml>";  
        excelFile += "<x:ExcelWorkbook>";  
        excelFile += "<x:ExcelWorksheets>";  
        excelFile += "<x:ExcelWorksheet>";  
        excelFile += "<x:Name>";  
        excelFile += "{worksheet}";  
        excelFile += "</x:Name>";  
        excelFile += "<x:WorksheetOptions>";  
        excelFile += "<x:DisplayGridlines/>";  
        excelFile += "</x:WorksheetOptions>";  
        excelFile += "</x:ExcelWorksheet>";  
        excelFile += "</x:ExcelWorksheets>";  
        excelFile += "</x:ExcelWorkbook>";  
        excelFile += "</xml>";  
        excelFile += "<![endif]-->";  
        excelFile += "</head>";  
        excelFile += "<body>";  
        excelFile += excel;  
        excelFile += "</body>";  
        excelFile += "</html>";  

          
        var uri = 'data:application/vnd.ms-excel;charset=utf-8,' + encodeURIComponent(excelFile);  
          
        var link = document.createElement("a");      
        link.href = uri;  
          
        link.style = "visibility:hidden";  
        link.download = FileName + ".xls";  
          
        document.body.appendChild(link);  
        link.click();  
        document.body.removeChild(link);  
    }  
</script> 
</head>
<body>  
<input type="button" id="wwo" value="導出" /> 
</body>
</html>  

兼容IE瀏覽器枫慷,table導出excel,

//判斷瀏覽器類型
function getExplorer() {
var explorer = window.navigator.userAgent;
//ie  
if (explorer.indexOf("MSIE") >= 0 || explorer.indexOf("Edge") >= 0 || (explorer.indexOf('Trident') > -1 && explorer.indexOf("rv:11.0") > -1)) {
    return 'ie';
}
else {
    return 'notIe'
}
}
function dataToExcel(tableid, name, filename) {
if (getExplorer() == 'ie') {
    var curTbl = document.getElementById(tableid);
    var oXL = new ActiveXObject("Excel.Application");
    var oWB = oXL.Workbooks.Add();
    var xlsheet = oWB.Worksheets(1);
    var sel = document.body.createTextRange();
    sel.moveToElementText(curTbl);
    sel.select;
    sel.execCommand("Copy");
    xlsheet.Paste();
    oXL.Visible = true;
    xlsheet.Columns("A:D").AutoFit;
    try {
        var fname = oXL.Application.GetSaveAsFilename("Excel.xls", "Excel Spreadsheets (*.xls), *.xls");
    } catch (e) {
        print("Nested catch caught " + e);
    } finally {
        oWB.SaveAs(fname);
        oWB.Close(savechanges = false);
        oXL.Quit();
        oXL = null;
        idTmr = window.setInterval("Cleanup();", 1);
    }

}
else {
    tableToExcel(tableid, name, filename)
}
}
function Cleanup() {
window.clearInterval(idTmr);
CollectGarbage();
}
var tableToExcel = (function () {
var uri = 'data:application/vnd.ms-excel;base64,',
        template = '<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:excel" xmlns="http://www.w3.org/TR/REC-html40"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>',
        base64 = function (s) { return window.btoa(unescape(encodeURIComponent(s))) },
        format = function (s, c) {
            return s.replace(/{(\w+)}/g,
                    function (m, p) { return c[p]; })
        }
return function (table, name, filename) {
    if (!table.nodeType) table = document.getElementById(table)
    var ctx = { worksheet: name || 'Worksheet', table: table.innerHTML }
    document.getElementById("dlink").href = uri + base64(format(template, ctx));
    document.getElementById("dlink").download = filename;
    document.getElementById("dlink").click();
}
})()
//進行調(diào)用
// 執(zhí)行表格導出到excel
dataToExcel('tableid', 'name', 'xiazai.xls');
**頁面需要
<a id="dlink" style="display:none">ceshi</a>
ie瀏覽器要自定義安全級別
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市涡戳,隨后出現(xiàn)的幾起案子结蟋,更是在濱河造成了極大的恐慌,老刑警劉巖渔彰,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嵌屎,死亡現(xiàn)場離奇詭異泥从,居然都是意外死亡饰及,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門粱腻,熙熙樓的掌柜王于貴愁眉苦臉地迎上來再沧,“玉大人尼夺,你說我怎么就攤上這事〕慈常” “怎么了汞斧?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長什燕。 經(jīng)常有香客問我粘勒,道長,這世上最難降的妖魔是什么屎即? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任庙睡,我火速辦了婚禮,結(jié)果婚禮上技俐,老公的妹妹穿的比我還像新娘乘陪。我一直安慰自己,他們只是感情好雕擂,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布啡邑。 她就那樣靜靜地躺著,像睡著了一般井赌。 火紅的嫁衣襯著肌膚如雪谤逼。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天仇穗,我揣著相機與錄音流部,去河邊找鬼。 笑死纹坐,一個胖子當著我的面吹牛枝冀,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼果漾,長吁一口氣:“原來是場噩夢啊……” “哼球切!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起绒障,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤欧聘,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后端盆,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡费封,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年焕妙,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片弓摘。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡焚鹊,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出韧献,到底是詐尸還是另有隱情末患,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布锤窑,位于F島的核電站璧针,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏渊啰。R本人自食惡果不足惜探橱,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绘证。 院中可真熱鬧隧膏,春花似錦、人聲如沸嚷那。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽魏宽。三九已至腐泻,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間队询,已是汗流浹背贫悄。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娘摔,地道東北人窄坦。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親鸭津。 傳聞我的和親對象是個殘疾皇子彤侍,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容