zoukankan      html  css  js  c++  java
  • excel 导出 兼容到ie (JavaScript)

    网上查了挺多资料,都不兼容IE,要么就是不是通过json来导出excel表格;

    直接上代码吧。

    var  tats= [{},{},{}] //这样的格式导出。

    tats.forEach(function (item, index) {
                        var vote = {};
                        vote.id = index + 1;
                        vote.area = item.area
                        vote.depart = item.depart
                        vote.companyName = item.companyName
                        vote.personName = item.personName
                        vote.phone = item.phone
                        vote.cardId = item.cardId
                        vote.status = item.status
                        if (vote.status == 1) {
                            vote.status = "已接种";
                        } else if (vote.status == 0) {
                            vote.status = "未接种";
                        }
                        vote.cardId = vote.cardId + ' ' + "&nbsp"
                        arr.push(vote)
                    })
                    var str = ['序号', '单位级别', '所属主管部门', '单位名称', '受种者姓名', '受种者电话', '身份证号码', '是否接种'];
                    Json2Excel(arr, exName, str)
     
        
     function Json2Excel(JSONData, FileName, title, filter) {
            if (!JSONData) return;
            var isIE = !!window.ActiveXObject || "ActiveXObject" in window; //判断是否IE浏览器
            //转化json为object
            var arrData = typeof JSONData != 'object' ? JSON.parse(JSONData) : JSONData;
            var excel = "<table>";
            //设置表头
            var row = "<tr>";
            if (title) {
                //使用标题项
                for (var i in title) { row += "<th align='center'>" + title[i] + '</th>'; }
            } else {
                //不使用标题项
                for (var i in arrData[0]) { row += "<th align='center'>" + i + '</th>'; }
            }
            excel += row + "</tr>";
            //设置数据
            for (var i = 0; i < arrData.length; i++) {
                var row = "<tr>";
                for (var index in arrData[i]) {
                    //判断是否有过滤行
                    if (filter) {
                        if (filter.indexOf(index) == -1) {
                            var value = arrData[i][index] == null ? "" : arrData[i][index];
                            row += '<td>' + value + '</td>';
                        }
                    } else {
                        var value = arrData[i][index] == null ? "" : arrData[i][index];
                        row += "<td align='center'>" + 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);
            if (isIE) {
                var blob = new Blob([excelFile], {
                    type: "application/vnd.ms-excel;charset=utf-8"
                });
                window.navigator.msSaveBlob(blob, FileName + ".xls");
            } else {
                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);
            }
        }
     
     
  • 相关阅读:
    应用程序域的用法
    WCF 暴露元数据的配置
    无svc文件发布WCF服务到IIS上
    C#输出毫秒
    [一点一滴学英语]20051017
    从其他平台转向Windows,MS提供了很多便利;那反过来呢?
    Ward Cunningham加入Eclipse?
    [导入][链接]Linux常用命令/快捷键
    [导入][号外]Oracle to buy JBoss, Zend and Sleepycat?
    [导入][链接]Google开始向Linux移植其Windows应用程序?
  • 原文地址:https://www.cnblogs.com/yangxiaoxin/p/14648944.html
Copyright © 2011-2022 走看看