javascript - ¿Cómo exportar todas las filas de la tabla HTML a un archivo de Excel desde una tabla paginada?
jquery html-table (0)
Estoy intentando exportar todas las filas de la tabla a un archivo CSV / Excel, pero el problema es que mi código solo exporta las filas visibles, es decir , los registros que se muestran actualmente. Mi tabla usa paginación y muestra 20 registros por página y hay más de 20 registros en la tabla y quiero exportarlos todos a un archivo csv.
¿Cómo puedo exportar todos los registros de la tabla?
Código Js:
function downloadCSV(csv, filename) {
var csvFile;
var downloadLink;
// CSV file
csvFile = new Blob([csv], {type: "text/csv"});
// Download link
downloadLink = document.createElement("a");
// File name
downloadLink.download = filename;
// Create a link to the file
downloadLink.href = window.URL.createObjectURL(csvFile);
// Hide download link
downloadLink.style.display = "none";
// Add the link to DOM
document.body.appendChild(downloadLink);
// Click download link
downloadLink.click();
}
function exportTableToCSV(filename) {
var csv = [];
var rows = document.querySelectorAll("table tr");
for (var i = 0; i < rows.length; i++) {
if(i==0){
continue;
}
var row = [], cols = rows[i].querySelectorAll("td, th");
for (var j = 0; j < cols.length; j++){
row.push(''"'' + cols[j].innerText + ''"'');
}
csv.push(row.join(","))
}
// Download CSV file
downloadCSV(csv.join("/n"), filename);
}
HTML para evento de botón:
<button onclick="exportTableToCSV(''usercomments.csv'')"> Export Comments to CSV</button>
Todo el código HTML:
<?php use_javascript(''/js/exportusercomments.js''); ?>
<div class="pagead">
<div class="pagein"align="center">
<div align="center">
<h3>User''s comments for "Please tell us your biggest reason for losing weight"</h3>
</div>
<br/>
<button onclick="exportTableToCSV(''usercomments.csv'')"> Export Comments to CSV</button>
<br/>
<div align="center"><?php $pager->render() ?></div>
<table width="100%" class="bk_table">
<tr>
<th width="10%">Date</th>
<th width="15%">Name</th>
<th width="15%">Email</th>
<th width="60%">Comment</th>
</tr>
<?php foreach ($pager->getResults() as $row): ?>
<tr>
<td align="left"><?php echo date(''M-d-Y'', strtotime($row[''datain''])); ?></td>
<td><?php echo $row[''name''] ?> </td>
<td><?php echo $row[''email''] ?> </td>
<td><?php echo $row[''comm''] ?></td>
</tr>
<?php endforeach; ?>
</table>
<div class="clear"></div>
</div>
</div>
<div class="bot"></div>