/* * jQuery Client Side Excel Export Plugin Library * http://techbytarun.com/ * * Copyright (c) 2013 Batta Tech Private Limited * https://github.com/tarunbatta/ExcelExportJs/blob/master/LICENSE.txt * * March 22, 2017 - Update by Maynard for IE 11.09 up compatability * */ (function ($) { var $defaults = { containerid: null , datatype: 'table' , dataset: null , columns: null , returnUri: false , locale: 'en-US' , worksheetName: "My Worksheet" , encoding: "utf-8" }; var $settings = $defaults; $.fn.excelexportjs = function (options) { $settings = $.extend({}, $defaults, options); var gridData = []; var excelData; return Initialize(); function Initialize() { var type = $settings.datatype.toLowerCase(); BuildDataStructure(type); switch (type) { case 'table': excelData = Export(ConvertFromTable()); break; case 'json': excelData = Export(ConvertDataStructureToTable()); break; case 'xml': excelData = Export(ConvertDataStructureToTable()); break; case 'jqgrid': excelData = Export(ConvertDataStructureToTable()); break; } if ($settings.returnUri) { return excelData; } else { if (!isBrowserIE()) { window.open(excelData); } } } function BuildDataStructure(type) { switch (type) { case 'table': break; case 'json': gridData = $settings.dataset; break; case 'xml': $($settings.dataset).find("row").each(function (key, value) { var item = {}; if (this.attributes != null && this.attributes.length > 0) { $(this.attributes).each(function () { item[this.name] = this.value; }); gridData.push(item); } }); break; case 'jqgrid': $($settings.dataset).find("rows > row").each(function (key, value) { var item = {}; if (this.children != null && this.children.length > 0) { $(this.children).each(function () { item[this.tagName] = $(this).text(); }); gridData.push(item); } }); break; } } function ConvertFromTable() { var result = $('
').append($('#' + $settings.containerid).clone()).html(); return result; } function ConvertDataStructureToTable() { var result = ""; result += ""; $($settings.columns).each(function (key, value) { if (this.ishidden != true) { result += ""; excelFile += ""; excelFile += ''; excelFile += ""; excelFile += ""; excelFile += ""; excelFile += htmltable.replace(/"/g, '\''); excelFile += ""; excelFile += ""; var uri = "data:application/vnd.ms-excel;base64,"; var ctx = { worksheet: $settings.worksheetName, table: htmltable }; return (uri + base64(format(excelFile, ctx))); } } function base64(s) { return window.btoa(unescape(encodeURIComponent(s))); } function format(s, c) { return s.replace(/{(\w+)}/g, function (m, p) { return c[p]; }); } function isBrowserIE() { var msie = !!navigator.userAgent.match(/Trident/g) || !!navigator.userAgent.match(/MSIE/g); if (msie > 0) { // If Internet Explorer, return true return true; } else { // If another browser, return false return false; } } function exportToExcelIE(table) { var el = document.createElement('div'); el.innerHTML = table; var tab_text = "
"; var textRange; var j = 0; var tab; if ($settings.datatype.toLowerCase() == 'table') { tab = document.getElementById($settings.containerid); // get table } else{ tab = el.children[0]; // get table } for (j = 0 ; j < tab.rows.length ; j++) { tab_text = tab_text + tab.rows[j].innerHTML + ""; //tab_text=tab_text+""; } tab_text = tab_text + "
"; tab_text = tab_text.replace(/]*>|<\/A>/g, "");//remove if u want links in your table tab_text = tab_text.replace(/]*>/gi, ""); // remove if u want images in your table tab_text = tab_text.replace(/]*>|<\/input>/gi, ""); // reomves input params var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE "); if (msie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer { txtArea1.document.open("txt/html", "replace"); txtArea1.document.write(tab_text); txtArea1.document.close(); txtArea1.focus(); sa = txtArea1.document.execCommand("SaveAs", true, "download"); } else sa = window.open('data:application/vnd.ms-excel,' + encodeURIComponent(tab_text)); return (sa); } }; })(jQuery); //get columns function getColumns(paramData){ var header = []; $.each(paramData[0], function (key, value) { //console.log(key + '==' + value); var obj = {} obj["headertext"] = key; obj["datatype"] = "string"; obj["datafield"] = key; header.push(obj); }); return header; }