2016-11-03 4 views
1

Привет, я использую этот код, чтобы сделать экспорт в моей таблице HTML, чтобы преуспеть, но он не работает в 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> 
Смежные вопросы