純js的excel匯出外掛
阿新 • • 發佈:2019-02-01
在不影響伺服器效能的前提下前端匯出table內容為excel檔案
/** 使用示例 自動繫結 table_to_excel <a href="#" download="交易記錄.xls"class="to_excel fjgl_top_r_05">匯出</a> $(".to_excel").click(function(event){ var t = Itable2excel({ worksheet:'資料分析', table: $('#order-list table') }); var data64 = t.uri(); if(data64==false) return false; event.currentTarget.href = data64; }); */ (function($,win,dom,undef){ var tmp = '<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><meta charset="UTF-8"></meta><!--[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>{{tables}}</body></html>'; var Itable2excel=function(settings){ this.settings = $.extend({},Itable2excel.defaults,settings); this.template = ''; //this.data64 = ''; //執行 this.run=function(){ this.exportHandler(); return this; } }; /** * 彈出框 預設配置 可擴充套件 * @type {Object} */ Itable2excel.defaults={ worksheet:'Worksheet', table:[], }; Itable2excel.prototype={ //輸出base64的excel下載資源 uri:function() { if($(this.template).find('tbody tr').length==0) return false; var uri = 'data:application/vnd.ms-excel;base64,'; return uri + this.base64(); }, base64:function() { return window.btoa(unescape(encodeURIComponent(this.template))); }, //對話方塊本身事件繫結 exportHandler:function(){ var table_str = ''; //資料過濾 $.each( this.settings.table, function(i){ var t = $('<div><table><thead></thead><tbody></tobdy></table></div>'); t.find('thead').html($(this.tHead).html()); t.find('tbody').append($(this.tBodies).children(':visible').clone()); t.find('.not-print').remove(); // not-print 是@media print中不會列印的部分 t.find('img').remove(); //圖片過濾 t.find('.table_search').remove(); //搜尋欄過濾 t.find('a').replaceWith(function (i) { //表格中不再需要的超連結也移除 return this.innerHTML; }); table_str +=t.html(); }); this.template = tmp.replace(/\{\{tables\}\}/g, table_str); this.template = this.template.replace(/\{\{worksheet\}\}/g, this.settings.worksheet); }, }; win['Itable2excel']=function(settings){ var obj = new Itable2excel(settings); return obj.run(); }; })(jQuery,window,document);
技術指導