123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339 |
- (function ($) {
- $.fn.extend({
- tableExport: function (options) {
- var defaults = {
- separator: ',',
- ignoreColumn: [],
- tableName: 'yourTableName',
- type: 'csv',
- pdfFontSize: 14,
- pdfLeftMargin: 20,
- escape: 'true',
- htmlContent: 'false',
- consoleLog: 'false'
- };
- var options = $.extend(defaults, options);
- var el = this;
- if (defaults.type == 'csv' || defaults.type == 'txt') {
- // Header
- var tdData = "";
- $(el).find('thead').find('tr').each(function () {
- tdData += "\n";
- $(this).filter(':visible').find('th').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- tdData += '"' + parseString($(this)) + '"' + defaults.separator;
- }
- }
- });
- tdData = $.trim(tdData);
- tdData = $.trim(tdData).substring(0, tdData.length - 1);
- });
- // Row vs Column
- $(el).find('tbody').find('tr').each(function () {
- tdData += "\n";
- $(this).filter(':visible').find('td').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- tdData += '"' + parseString($(this)) + '"' + defaults.separator;
- }
- }
- });
- //tdData = $.trim(tdData);
- tdData = $.trim(tdData).substring(0, tdData.length - 1);
- });
- //output
- if (defaults.consoleLog == 'true') {
- console.log(tdData);
- }
- var base64data = "base64," + $.base64.encode(tdData);
- window.open('data:application/' + defaults.type + ';filename=exportData;' + base64data,'filename.csv');
- } else if (defaults.type == 'sql') {
- // Header
- var tdData = "INSERT INTO `" + defaults.tableName + "` (";
- $(el).find('thead').find('tr').each(function () {
- $(this).filter(':visible').find('th').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- tdData += '`' + parseString($(this)) + '`,';
- }
- }
- });
- tdData = $.trim(tdData);
- tdData = $.trim(tdData).substring(0, tdData.length - 1);
- });
- tdData += ") VALUES ";
- // Row vs Column
- $(el).find('tbody').find('tr').each(function () {
- tdData += "(";
- $(this).filter(':visible').find('td').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- tdData += '"' + parseString($(this)) + '",';
- }
- }
- });
- tdData = $.trim(tdData).substring(0, tdData.length - 1);
- tdData += "),";
- });
- tdData = $.trim(tdData).substring(0, tdData.length - 1);
- tdData += ";";
- //output
- //console.log(tdData);
- if (defaults.consoleLog == 'true') {
- console.log(tdData);
- }
- var base64data = "base64," + $.base64.encode(tdData);
- window.open('data:application/sql;filename=exportData;' + base64data);
- } else if (defaults.type == 'json') {
- var jsonHeaderArray = [];
- $(el).find('thead').find('tr').each(function () {
- var tdData = "";
- var jsonArrayTd = [];
- $(this).filter(':visible').find('th').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- jsonArrayTd.push(parseString($(this)));
- }
- }
- });
- jsonHeaderArray.push(jsonArrayTd);
- });
- var jsonArray = [];
- $(el).find('tbody').find('tr').each(function () {
- var tdData = "";
- var jsonArrayTd = [];
- $(this).filter(':visible').find('td').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- jsonArrayTd.push(parseString($(this)));
- }
- }
- });
- jsonArray.push(jsonArrayTd);
- });
- var jsonExportArray = [];
- jsonExportArray.push({header: jsonHeaderArray, data: jsonArray});
- //Return as JSON
- //console.log(JSON.stringify(jsonExportArray));
- //Return as Array
- //console.log(jsonExportArray);
- if (defaults.consoleLog == 'true') {
- console.log(JSON.stringify(jsonExportArray));
- }
- var base64data = "base64," + $.base64.encode(JSON.stringify(jsonExportArray));
- window.open('data:application/json;filename=exportData;' + base64data);
- } else if (defaults.type == 'xml') {
- var xml = '<?xml version="1.0" encoding="utf-8"?>';
- xml += '<tabledata><fields>';
- // Header
- $(el).find('thead').find('tr').each(function () {
- $(this).filter(':visible').find('th').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- xml += "<field>" + parseString($(this)) + "</field>";
- }
- }
- });
- });
- xml += '</fields><data>';
- // Row Vs Column
- var rowCount = 1;
- $(el).find('tbody').find('tr').each(function () {
- xml += '<row id="' + rowCount + '">';
- var colCount = 0;
- $(this).filter(':visible').find('td').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- xml += "<column-" + colCount + ">" + parseString($(this)) + "</column-" + colCount + ">";
- }
- }
- colCount++;
- });
- rowCount++;
- xml += '</row>';
- });
- xml += '</data></tabledata>'
- if (defaults.consoleLog == 'true') {
- console.log(xml);
- }
- var base64data = "base64," + $.base64.encode(xml);
- window.open('data:application/xml;filename=exportData;' + base64data);
- } else if (defaults.type == 'excel' || defaults.type == 'doc' || defaults.type == 'powerpoint') {
- //console.log($(this).html());
- var excel = "<table>";
- // Header
- $(el).find('thead').find('tr').each(function () {
- excel += "<tr>";
- $(this).filter(':visible').find('th').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- excel += "<td>" + parseString($(this)) + "</td>";
- }
- }
- });
- excel += '</tr>';
- });
- // Row Vs Column
- var rowCount = 1;
- $(el).find('tbody').find('tr').each(function () {
- excel += "<tr>";
- var colCount = 0;
- $(this).filter(':visible').find('td').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- excel += "<td>" + parseString($(this)) + "</td>";
- }
- }
- colCount++;
- });
- rowCount++;
- excel += '</tr>';
- });
- excel += '</table>'
- if (defaults.consoleLog == 'true') {
- console.log(excel);
- }
- var excelFile = "<html xmlns:o='urn:schemas-microsoft-com:office:office' xmlns:x='urn:schemas-microsoft-com:office:" + defaults.type + "' xmlns='http://www.w3.org/TR/REC-html40'>";
- excelFile += "<head>";
- excelFile += "<!--[if gte mso 9]>";
- excelFile += "<xml>";
- excelFile += "<x:ExcelWorkbook>";
- excelFile += "<x:ExcelWorksheets>";
- excelFile += "<x:ExcelWorksheet>";
- excelFile += "<x:Name>";
- excelFile += "{worksheet}";
- excelFile += "</x:Name>";
- excelFile += "<x:WorksheetOptions>";
- excelFile += "<x:DisplayGridlines/>";
- excelFile += "</x:WorksheetOptions>";
- excelFile += "</x:ExcelWorksheet>";
- excelFile += "</x:ExcelWorksheets>";
- excelFile += "</x:ExcelWorkbook>";
- excelFile += "</xml>";
- excelFile += "<![endif]-->";
- excelFile += "</head>";
- excelFile += "<body>";
- excelFile += excel;
- excelFile += "</body>";
- excelFile += "</html>";
- var base64data = "base64," + $.base64.encode(excelFile);
- window.open('data:application/vnd.ms-' + defaults.type + ';filename=exportData.doc;' + base64data);
- } else if (defaults.type == 'png') {
- html2canvas($(el), {
- onrendered: function (canvas) {
- var img = canvas.toDataURL("image/png");
- window.open(img);
- }
- });
- } else if (defaults.type == 'pdf') {
- var doc = new jsPDF('p', 'pt', 'a4', true);
- doc.setFontSize(defaults.pdfFontSize);
- // Header
- var startColPosition = defaults.pdfLeftMargin;
- $(el).find('thead').find('tr').each(function () {
- $(this).filter(':visible').find('th').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- var colPosition = startColPosition + (index * 50);
- doc.text(colPosition, 20, parseString($(this)));
- }
- }
- });
- });
- // Row Vs Column
- var startRowPosition = 20;
- var page = 1;
- var rowPosition = 0;
- $(el).find('tbody').find('tr').each(function (index, data) {
- rowCalc = index + 1;
- if (rowCalc % 26 == 0) {
- doc.addPage();
- page++;
- startRowPosition = startRowPosition + 10;
- }
- rowPosition = (startRowPosition + (rowCalc * 10)) - ((page - 1) * 280);
- $(this).filter(':visible').find('td').each(function (index, data) {
- if ($(this).css('display') != 'none') {
- if (defaults.ignoreColumn.indexOf(index) == -1) {
- var colPosition = startColPosition + (index * 50);
- doc.text(colPosition, rowPosition, parseString($(this)));
- }
- }
- });
- });
- // Output as Data URI
- doc.output('datauri');
- }
- function parseString(data) {
- if (defaults.htmlContent == 'true') {
- content_data = data.html().trim();
- } else {
- content_data = data.text().trim();
- }
- if (defaults.escape == 'true') {
- content_data = escape(content_data);
- }
- return content_data;
- }
- }
- });
- })(jQuery);
-
|