En mi aplicación web, tengo una tabla HTML que muestra algunos datos al usuario.
Aquí quiero exportarlo a excel y encontré un código jQuery para hacerlo.
Pero la cuestión es que también exporta los datos que escondo de la tabla.
¿Hay alguna forma de exportar la tabla sin <td style="display:none;"> @Html.DisplayFor(modelItem => item.Id) </td>
esta es la mesa
<table id="tblParts" class="table table-striped"> <thead> <tr> <th> Part Number </th> <th> Description </th> <th> Model </th> <th> Order Qty </th> <th></th> </tr> </thead> <tbody> @foreach (var item in Model.OrderBy(i => i.PartNumber)) { <tr> <td style="display:none;"> @Html.DisplayFor(modelItem => item.Id) </td> <td> @Html.DisplayFor(modelItem => item.PartNumber) </td> <td> @Html.DisplayFor(modelItem => item.Description) </td> <td> @Html.DisplayFor(modelItem => item.Model) </td> <td> @Html.DisplayFor(modelItem => item.OrderQty) </td> </tr> } </tbody> </table>Este es el Jquery.
function ExportToExcel(type, fn, dl) { var elt = document.getElementById('tblParts'); var wb = XLSX.utils.table_to_book(elt, { sheet: "sheet1" }); return dl ? XLSX.write(wb, { bookType: type, bookSST: true, type: 'base64' }) : XLSX.writeFile(wb, fn || ('Order.' + (type || 'xlsx'))); }Tal vez antes de exportar, puede eliminar la columna oculta dentro de la función de exportación. Asigne a la columna oculta un nombre de clase. He adjuntado un violín para su referencia:
HTML
<table id="tblParts" class="table table-striped"> <thead> <tr> <th>Part Number </th> <th>Description </th> <th>Model </th> <th>Order Qty </th> <th></th> </tr> </thead> <tbody> <tr> <td style="display: none;" class="item-id">1 </td> <td>2</td> <td>3 </td> <td>4 </td> <td>5 </td> </tr> <tr> <td style="display: none;" class="item-id">2 </td> <td>2</td> <td>3 </td> <td>4 </td> <td>5 </td> </tr> </tbody> </table>JS
function ExportToExcel(type, fn, dl) { var elt = document.getElementById('tblParts'); const elements = elt.getElementsByClassName("item-id"); //get column with the class name item-id while (elements.length > 0) elements[0].remove(); //if element exist, remove the column var wb = XLSX.utils.table_to_book(elt, { sheet: "sheet1" }); return dl ? XLSX.write(wb, { bookType: type, bookSST: true, type: 'base64' }) : XLSX.writeFile(wb, fn || ('Order.' + (type || 'xlsx'))); }