#javascript #html #jquery
#язык JavaScript #HTML #jquery
Вопрос:
Когда я экспортирую свою таблицу в excel с помощью jquery, она экспортируется с пустыми столбцами. Если я применю некоторые фильтры, может быть много пустых столбцов, потому что он также экспортирует, если у них есть отображение: нет. Я хотел бы знать, есть ли какой-то способ, чтобы при экспорте проверить, есть ли пустые столбцы, и не экспортировать их, чтобы он удалял пустые столбцы.
мой html-код таков:
lt;table id='table' class='table table-bordered table-striped'gt; lt;tr class='superior'gt; lt;th class='titulo'gt;Nombrelt;/thgt; lt;th class='titulo'gt;Apellidolt;/thgt;lt;/trgt;lt;tr class='superior'gt; lt;th class='th-filtros'gt;lt;input class='form-control' id='input-nombre' type='text' placeholder='Buscar..'gt;lt;/thgt; lt;th class='th-filtros'gt;lt;input class='form-control' id='input-apellido' type='text' placeholder='Buscar..'gt;lt;/thgt;lt;/trgt;lt;tbody id='myTable'gt; lt;trgt; lt;td class='nombre-td'gt;Datalt;/tdgt; lt;td class='apellido-td'gt;Datalt;/tdgt; lt;/trgt;lt;/tbodygt;lt;/tablegt;
мой js-код таков:
$(document).ready(function() { $("#btnExport").click(function() { tableToExcel('table', 'test', 'usuarios'); } ); }); function getIEVersion() // Returns the version of Windows Internet Explorer or a -1 // (indicating the use of another browser). { var rv = -1; // Return value assumes failure. if (navigator.appName == 'Microsoft Internet Explorer') { var ua = navigator.userAgent; var re = new RegExp("MSIE ([0-9]{1,}[.0-9]{0,})"); if (re.exec(ua) != null) rv = parseFloat(RegExp.$1); } return rv; } function tableToExcel(table, sheetName, fileName) { var ua = window.navigator.userAgent; var msie = ua.indexOf("MSIE "); if (msie gt; 0 || !!navigator.userAgent.match(/Trident.*rv:11./)) // If Internet Explorer { return fnExcelReport(table, fileName); } var uri = 'data:application/vnd.ms-excel;base64,', templateData = 'lt;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"gt;lt;headgt;lt;!--[if gte mso 9]gt;lt;xmlgt;lt;x:ExcelWorkbookgt;lt;x:ExcelWorksheetsgt;lt;x:ExcelWorksheetgt;lt;x:Namegt;{worksheet}lt;/x:Namegt;lt;x:WorksheetOptionsgt;lt;x:DisplayGridlines/gt;lt;/x:WorksheetOptionsgt;lt;/x:ExcelWorksheetgt;lt;/x:ExcelWorksheetsgt;lt;/x:ExcelWorkbookgt;lt;/xmlgt;lt;![endif]--gt;lt;meta http-equiv="content-type" content="text/plain; charset=UTF-8"/gt;lt;/headgt;lt;bodygt;lt;tablegt;{table}lt;/tablegt;lt;/bodygt;lt;/htmlgt;', base64Conversion = function(s) { return window.btoa(unescape(encodeURIComponent(s))) }, formatExcelData = function(s, c) { return s.replace(/{(w )}/g, function(m, p) { return c[p]; }) } $("tbody gt; tr[data-level='0']").show(); if (!table.nodeType) table = document.getElementById(table) var ctx = { worksheet: sheetName || 'Worksheet', table: table.innerHTML } var element = document.createElement('a'); element.setAttribute('href', 'data:application/vnd.ms-excel;base64,' base64Conversion(formatExcelData(templateData, ctx))); element.setAttribute('download', fileName); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); $("tbody gt; tr[data-level='0']").hide(); } function fnExcelReport(table, fileName) { var tab_text = "lt;table border='2px'gt;"; var textRange; if (!table.nodeType) table = document.getElementById(table) $("tbody gt; tr[data-level='0']").show(); tab_text = tab_text table.innerHTML; tab_text = tab_text "lt;/tablegt;"; tab_text = tab_text.replace(/lt;A[^gt;]*gt;|lt;/Agt;/g, ""); //remove if u want links in your table tab_text = tab_text.replace(/lt;img[^gt;]*gt;/gi, ""); // remove if u want images in your table tab_text = tab_text.replace(/lt;input[^gt;]*gt;|lt;/inputgt;/gi, ""); // reomves input params txtArea1.document.open("txt/html", "replace"); txtArea1.document.write(tab_text); txtArea1.document.close(); txtArea1.focus(); sa = txtArea1.document.execCommand("SaveAs", false, fileName ".xls"); $("tbody gt; tr[data-level='0']").hide(); return (sa); }