将数据从HTML表格导出到Excel时排除特定列

我正在使用此脚本将数据从HTML表格导出到Excel。

<script> var tableToExcel = (function() { var uri = 'data:application/vnd.ms-excel;base64,' , template = '<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"><head><!--[if gte mso 9]><xml><x:ExcelWorkbook><x:ExcelWorksheets><x:ExcelWorksheet><x:Name>{worksheet}</x:Name><x:WorksheetOptions><x:DisplayGridlines/></x:WorksheetOptions></x:ExcelWorksheet></x:ExcelWorksheets></x:ExcelWorkbook></xml><![endif]--></head><body><table>{table}</table></body></html>' , base64 = function(s) { return window.btoa(unescape(encodeURIComponent(s))) } , format = function(s, c) { return s.replace(/{(\w+)}/g, function(m, p) { return c[p]; }) } return function(table, name) { if (!table.nodeType) table = document.getElementById(table) var ctx = {worksheet: name || 'Worksheet', table: table.innerHTML} window.location.href = uri + base64(format(template, ctx)) } })() </script> 

我在这里find了这个,但是当我导出这个数据时,它包含了HTML表格中的所有列。 但我最后一行包含一些图标,我不想出口到Excel。

 <div class="row" style="margin-left:20px;"> <div class="grid_4"> <div class="da-panel collapsible"> <input type="button" class="btn btn-success" onclick="tableToExcel('testTable', 'W3C Example Table')" value="Export to Excel" style="float:right"> <div class="da-panel-content"> <div class="da-panel-title" style="border-top:1px solid #ccc;border-bottom:1px solid #ccc"> <h3 style="padding-left:10px;font-weight:bold;">Staff Training Information</h3></div> <table class="da-table da-ex-datatable-numberpaging" id="testTable" width="100%"> <thead width="100%"> <tr> <th width="10%">Staff ID</th> <th width="10%">Name</th> <th width="10%">Location</th> <th width="10%">POCT Test</th> <th width="10%">Initial Training Date</th> <th width="10%">Annual Competency Date</th> <th width="10%">Competency Type</th> <th width="1%">Next Competency Date</th> <th width="39%">Action</th> </tr> </thead> <tbody width="100%"> <?php include_once('database.php'); $pdo = Database::connect(); $sql = 'SELECT * FROM competency'; foreach ($pdo->query($sql) as $row) { $id = $row['staff_id']; echo '<tr>'; echo '<td width="10%">'. $row['staff_id'] . '</td>'; $sql1 = "SELECT *FROM staff WHERE StaffID='$id'"; foreach($pdo->query($sql1) as $res) { echo '<td width="10%">'. $res['StaffName'] . '</td>'; } echo '<td width="10%">'. $row['location'] . '</td>'; ?> <td width="10%"> <?php $s = $row['poct_test']; $val = explode(" ",$s); for ($i=0; $i<sizeof($val); $i++) { $v = $val[$i]; echo $v."<br/>"; } ?> </td> <?php echo '<td width="10%">'. $row['date_of_initial_training'] . '</td>'; echo '<td width="10%">'. $row['annual_competency'] . '</td>'; echo '<td width="10%">'. $row['type_of_competency'] . '</td>'; echo '<td width="1%">'. $row['next_competency'] . '</td>'; echo '<td width="39%">'; echo '<a href="viewtrainingdetails.php?id='.$row['id'].'"><img src="images/ic_zoom.png" height="16" width="16" /></a>'; echo ' '; echo '<a href="updatetraining.php?id='.$row['id'].'"><img src="images/icn_edit.png"/></a>'; echo ' '; ?> <a href="javascript:DeleteRecord('<?php echo $row['id'];?>')"><img src="images/icn_logout.png"/></a> <?php echo '</td>'; echo '</tr>'; } Database::disconnect(); ?> </tbody> </table> </div> </div> </div> </div> 

如代码所示,最后3个回声包含更新/删除图标。 在excel中导出表格内容时我只想排除Action列。 任何帮助将不胜感激。

在桌子下面做一个隐藏的div

 <div class="exportData"> </div> 

然后点击exportbutton,通过ajax调用export.php,并把结果放到exportData div中。 然后,您可以调用您的打印脚本所带来的新数据。

 $.post( "export.php", function( data ) { $( ".result" ).html( data ); }); 

在export.php上复制你的for循环,并删除两个col。

您可以使用jQuery中的select器,在内存中克隆表格,然后使用适当的select器移除不需要的元素。

 var $table = $('#testTable').clone(); $table = filterNthColumn($table, 9); //remove Action column function filterNthColumn($table, n){ return $table.find('td:nth-child('+n+'), th:nth-child('+n+')').remove(); } 

我想你可以先克隆表,删除操作列和“tableToExcel”克隆表。

为了方便删除列,可以将action_th类添加到action中,将action_td类添加到action中。

那就是这样,

  var exTable = $('#testTable').clone(); //remove the action th/td exTable.find('.action_th, .action_td').remove(); //then tableToExcel(exTable, .. 

这对我有用 –

 $('#divTableContainer').clone().find('table tr th:nth-child(7),table tr td:nth-child(7)).remove().end().prop('outerHTML')