2015-10-10 1 views
1

У меня есть все скрипты, упомянутые и поиска Я написал следующий код:Невозможно экспортировать таблицу в Excel с помощью tableExport

<table id="customers" class="table table-striped" > 
<thead>   
    <tr class='warning'> 
     <th>Country</th> 
     <th>Population</th> 
     <th>Date</th> 
     <th>%ge</th> 
    </tr> 
</thead> 
<tbody> 
    <tr> 
     <td>Chinna</td> 
     <td>1,363,480,000</td> 
     <td>March 24, 2014</td> 
     <td>19.1</td> 
    </tr> 
    <tr> 
     <td>India</td> 
     <td>1,241,900,000</td> 
     <td>March 24, 2014</td> 
     <td>17.4</td> 
    </tr> 
    <tr> 
     <td>United States</td> 
     <td>317,746,000</td> 
     <td>March 24, 2014</td> 
     <td>4.44</td> 
    </tr> 
    <tr> 
     <td>Indonesia</td> 
     <td>249,866,000</td> 
     <td>July 1, 2013</td> 
     <td>3.49</td> 
    </tr> 

</tbody> 
</table>    
<button onClick ="$('#customers').tableExport({type:'excel',escape:'false'});"> XLS</button> 

код ничего не делает, когда я нажимаю на кнопку. Моя jsfiddle ссылка: https://jsfiddle.net/DTcHh/12981/ Что может быть причиной того, что код не работает?

+0

Похоже, что 'функция tableExport' использует JQuery. У вас есть это до включения библиотеки, которая определяет 'tableExport'? – larrylampco

ответ

1

Вы можете использовать jquery ui для экспорта в excel.

//table2excel.js 
;(function ($, window, document, undefined) { 
var pluginName = "table2excel", 

defaults = { 
    exclude: ".noExl", 
      name: "Table2Excel" 
}; 

// The actual plugin constructor 
function Plugin (element, options) { 
     this.element = element; 
     this.settings = $.extend({}, defaults, options); 
     this._defaults = defaults; 
     this._name = pluginName; 
     this.init(); 
} 

Plugin.prototype = { 
    init: function() { 
     var e = this; 

     e.template = { 
      head: "<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>", 
      sheet: { 
       head: "<x:ExcelWorksheet><x:Name>", 
       tail: "</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet>" 
      }, 
      mid: "</x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body>", 
      table: { 
       head: "<table>", 
       tail: "</table>" 
      }, 
      foot: "</body></html>" 
     }; 

     e.tableRows = []; 

     // get contents of table except for exclude 
     $(e.element).each(function(i,o) { 
      var tempRows = ""; 
      $(o).find("tr").not(e.settings.exclude).each(function (i,o) { 
       tempRows += "<tr>" + $(o).html() + "</tr>"; 
      }); 
      e.tableRows.push(tempRows); 
     }); 

     e.tableToExcel(e.tableRows, e.settings.name); 
    }, 

    tableToExcel: function (table, name) { 
     var e = this, fullTemplate="", i, link, a; 

     e.uri = "data:application/vnd.ms-excel;base64,"; 
     e.base64 = function (s) { 
      return window.btoa(unescape(encodeURIComponent(s))); 
     }; 
     e.format = function (s, c) { 
      return s.replace(/{(\w+)}/g, function (m, p) { 
       return c[p]; 
      }); 
     }; 
     e.ctx = { 
      worksheet: name || "Worksheet", 
      table: table 
     }; 

     fullTemplate= e.template.head; 

     if ($.isArray(table)) { 
      for (i in table) { 
       //fullTemplate += e.template.sheet.head + "{worksheet" + i + "}" + e.template.sheet.tail; 
       fullTemplate += e.template.sheet.head + "Table" + i + "" + e.template.sheet.tail; 
      } 
     } 

     fullTemplate += e.template.mid; 

     if ($.isArray(table)) { 
      for (i in table) { 
       fullTemplate += e.template.table.head + "{table" + i + "}" + e.template.table.tail; 
      } 
     } 

     fullTemplate += e.template.foot; 

     for (i in table) { 
      e.ctx["table" + i] = table[i]; 
     } 
     delete e.ctx.table; 

     if (typeof msie !== "undefined" && msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./))  // If Internet Explorer 
     { 
      if (typeof Blob !== "undefined") { 
       //use blobs if we can 
       fullTemplate = [fullTemplate]; 
       //convert to array 
       var blob1 = new Blob(fullTemplate, { type: "text/html" }); 
       window.navigator.msSaveBlob(blob1, getFileName(e.settings)); 
      } else { 
       //otherwise use the iframe and save 
       //requires a blank iframe on page called txtArea1 
       txtArea1.document.open("text/html", "replace"); 
       txtArea1.document.write(e.format(fullTemplate, e.ctx)); 
       txtArea1.document.close(); 
       txtArea1.focus(); 
       sa = txtArea1.document.execCommand("SaveAs", true, getFileName(e.settings)); 
      } 

     } else { 
      link = e.uri + e.base64(e.format(fullTemplate, e.ctx)); 
      a = document.createElement("a"); 
      a.download = getFileName(e.settings); 
      a.href = link; 

      document.body.appendChild(a); 

      a.click(); 

      document.body.removeChild(a); 
     } 

     return true; 
    } 
}; 

function getFileName(settings) { 
    return (settings.filename ? settings.filename : "table2excel") + ".xls"; 
} 

$.fn[ pluginName ] = function (options) { 
    var e = this; 
     e.each(function() { 
      if (!$.data(e, "plugin_" + pluginName)) { 
       $.data(e, "plugin_" + pluginName, new Plugin(this, options)); 
      } 
     }); 

    // chain jQuery functions 
    return e; 
}; 

})(jQuery, window, document); 


$("#excel").click(function(){ 

        $("#customers").table2excel({ 
          exclude: ".noExl", 
        name: "Excel Document customers" 
        }); 

        }); 

Проверить эту скрипку ->https://jsfiddle.net/DTcHh/12997/

+0

Спасибо. Оно работает. –

+0

Вы, привет Добро пожаловать :) –

Смежные вопросы