/* * jQuery Client Side Excel Export Plugin Library * http://www.battatech.com/ * * Copyright (c) 2013 Batta Tech Private Limited * Licensed under https://github.com/battatech/battatech_excelexport/blob/master/LICENSE.txt */ (function ($) { $datatype = { Table: 1 , Json: 2 , Xml: 3 , JqGrid: 4 } var $defaults = { containerid: null , datatype: $datatype.Table , dataset: null , columns: null , returnUri: false , worksheetName: "My Worksheet" }; var $settings = $defaults; $.fn.btechco_excelexport = function (options) { $settings = $.extend({}, $defaults, options); var gridData = []; var excelData; return Initialize(); function Initialize() { BuildDataStructure(); switch ($settings.datatype) { case 1: excelData = Export(ConvertFromTable()); break; case 2: excelData = Export(ConvertDataStructureToTable()); break; case 3: excelData = Export(ConvertDataStructureToTable()); break; case 4: excelData = Export(ConvertDataStructureToTable()); break; } if ($settings.returnUri) { return excelData; } else { window.open(excelData); } } function BuildDataStructure() { switch ($settings.datatype) { case 1: break; case 2: gridData = $settings.dataset; break; case 3: $($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 4: $($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 += "