使用javascript从html表格导出到excel时隐藏列

我有一个HTML表,我必须导出到Excel,但是这样做,我不想要导出一些TD元素。 当我应用javascript来隐藏td时,所做的更改仅适用于视图表单而不适用于正在导出的内容。

在这种情况下如何导出需要帮助。

我已经在一个页面中包含html,css和脚本。

<html> <body> <div id="myDiv"> <table id="metrics" border="1px" cellspacing="0 px" style="border-style: solid; border-color: Black; border-width: thin;"> <tr> <td style= "background-color: #bfbfbf; font-size: small; color: black;"> LOB </td> <td> <span class="hillbillyForm" data-displayname='LOB' style="display:none;"></span> </td> </tr> </table> <input type="button" id="btnExport" value="Export" onclick="TableToExcel('metrics');" /> </div> </body> 

在这里我想隐藏包含span class“hillbillyForm”的td

我正在使用的JavaScript是

  function TableToExcel(tableid) { var id = $('[id$="' + tableid + '"]'); var $clonedTable = $("id").clone(); $clonedTable.find('[style = "display: none"]').remove(); var strCopy = $('<div></div>').html(id.clone()).html(); window.clipboardData.setData("Text", strCopy); var objExcel = new ActiveXObject("Excel.Application"); objExcel.visible = false; var objWorkbook = objExcel.Workbooks.Add; var objWorksheet = objWorkbook.Worksheets(1); objWorksheet.Paste; objExcel.visible = true; } </script> 

所以我所理解的是,你想删除所有与class级hillbillyForm有直接的孩子的TD。

你可以做这样的事情:

 var form = document.getElementById(tableid), exportForm = form.cloneNode(true), elementsToRemove = exportForm.querySelectorAll('.hillbillyForm'); for(var i = elementsToRemove.length; i--;){ var td = elementsToRemove[i].parentElement; if(td){ td.parentElement.removeChild(td) } } 

的jsfiddle