2016-11-03 69 views
1

嗨,我使用此代码在我的HTML表格上导出excel,但它不在IE 11中工作。有人可以帮我吗?导出为Excel无法在Internet Explorer 11中工作

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) { 
    if (!table.nodeType) table = document.getElementById(table) 
    var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} 
    window.location.href = uri + base64(format(template, ctx)) 
    } 
})() 
+1

如何与PHP你的问题?顺便说一句,只是说“不工作”,没有任何解释通常不会与这里的人坐在一起。 –

+1

检查此帖的接受答案:http://stackoverflow.com/questions/22317951/export-html-table-data-to-excel-using-javascript-jquery-is-not-working-properl –

回答

0

这工作:

<a table_div='ExportcommunicationPlanDiv' class="btnExport"><li title="Export to Excel"><div class="btn-excel"> </div></li></a> 

<script> 

    var excelfileName="download"; 
$(".btnExport").click(function() { 

    var today = new Date(); 
    var dd = today.getDate(); 
    var mm = today.getMonth()+1; //January is 0! 

    var yyyy = today.getFullYear(); 
    if(dd<10){ 
     dd='0'+dd; 
    } 
    if(mm<10){ 
     mm='0'+mm; 
    } 
    var today = dd+'/'+mm+'/'+yyyy; 

    excelfileName = $('#POTS_CKT_ID').val() +"_"+today; 
    // var todaysDate = moment().format('DD-MM-YYYY'); 
    if(isIE()) 
     { 

     var id = $(this).attr('table_div'); 
     var blobURL = tableToExcelForIE(''+id+''); 
     } 
    else 
     { 
     //var todaysDate ="test"; 
     var id = $(this).attr('table_div'); 
     var blobURL = tableToExcel(''+id+''); 
     $(this).attr('download',excelfileName+'.xls') 
     $(this).attr('href',blobURL); 
     } 

    }); 
function isIE() 
{ 
    var isIE11 = navigator.userAgent.indexOf(".NET CLR") > -1;  
    var isIE11orLess = isIE11 || navigator.appVersion.indexOf("MSIE") != -1; 
    return isIE11orLess; 
} 
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]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></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) { 
     if (!table.nodeType) table = document.getElementById(table) 
     var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} 
     var blob = new Blob([format(template, ctx)]); 
     var blobURL = window.URL.createObjectURL(blob); 
     return blobURL; 
     } 
    })() 


    var tableToExcelForIE = (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]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></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) { 
      if (!table.nodeType) table = document.getElementById(table) 
      var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} 
      var blob = new Blob([format(template, ctx)]); 
      var blobURL = window.URL.createObjectURL(blob); 
      //IE 
       if (isIE()) { 
        csvData = table.innerHTML; 
        if (window.navigator.msSaveBlob) { 
         var blob = new Blob([format(template, ctx)], { 
          type: "text/html" 
         }); 
         navigator.msSaveBlob(blob, ''+excelfileName+'.xls'); 

        } 

       } 
      } 
     })() 
    </script> 
+0

尽管这可能会解决这个问题,你应该解释如何以及为什么它解决了这个问题。 – hering

0
It is Working Good . 
in html code 
<a table_div='ExportcommunicationPlanDiv' class="btnExport"><li title="Export to Excel"><div class="btn-excel"> </div></li></a> 

<script> 

    var excelfileName="download"; 
$(".btnExport").click(function() { 

    var today = new Date(); 
    var dd = today.getDate(); 
    var mm = today.getMonth()+1; //January is 0! 

    var yyyy = today.getFullYear(); 
    if(dd<10){ 
     dd='0'+dd; 
    } 
    if(mm<10){ 
     mm='0'+mm; 
    } 
    var today = dd+'/'+mm+'/'+yyyy; 

    excelfileName = excelfileName +"_"+today; 
    // var todaysDate = moment().format('DD-MM-YYYY'); 
    if(isIE()) 
     { 

     var id = $(this).attr('table_div'); 
     var blobURL = tableToExcelForIE(''+id+''); 
     } 
    else 
     { 
     //var todaysDate ="test"; 
     var id = $(this).attr('table_div'); 
     var blobURL = tableToExcel(''+id+''); 
     $(this).attr('download',excelfileName+'.xls') 
     $(this).attr('href',blobURL); 
     } 

    }); 
function isIE() 
{ 
    var isIE11 = navigator.userAgent.indexOf(".NET CLR") > -1;  
    var isIE11orLess = isIE11 || navigator.appVersion.indexOf("MSIE") != -1; 
    return isIE11orLess; 
} 
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]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></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) { 
     if (!table.nodeType) table = document.getElementById(table) 
     var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} 
     var blob = new Blob([format(template, ctx)]); 
     var blobURL = window.URL.createObjectURL(blob); 
     return blobURL; 
     } 
    })() 


    var tableToExcelForIE = (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]--><meta http-equiv="content-type" content="text/plain; charset=UTF-8"/></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) { 
      if (!table.nodeType) table = document.getElementById(table) 
      var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} 
      var blob = new Blob([format(template, ctx)]); 
      var blobURL = window.URL.createObjectURL(blob); 
      //IE 
       if (isIE()) { 
        csvData = table.innerHTML; 
        if (window.navigator.msSaveBlob) { 
         var blob = new Blob([format(template, ctx)], { 
          type: "text/html" 
         }); 
         navigator.msSaveBlob(blob, ''+excelfileName+'.xls'); 

        } 

       } 
      } 
     })() 
    </script> 
相关问题