Estoy usando datatables.net y algunas de mis páginas tienen varias tablas. No puedo entender cómo iterar sobre cada tabla guardando los datos en una variable para poder sacarlos como un solo csv cuando se hace clic en el botón Exportar.
algunas tablas tienen encabezados diferentes y todo está bien. solo quiero generar todos los valores th y td de toda la tabla en un solo csv. si datatables no es compatible con esto de alguna manera indirecta, entonces está bien si es jquery o javascript.
gracias de antemano
Prueba este método
<table id="example1" class="table" style="width:100%"> </table> <table id="example2" class="table" style="width:100%"> </table>JS:
var table = $('#example1').DataTable(); var data = table.buttons.exportData(); // Do something with the 'data' variableesto es lo que funcionó para mí. Gracias.
$( "#exportalltocsv" ).on( "click", function(e) { e.preventDefault(); let csvstring = ""; $('.dataTable').each( function () { var columns = []; $(this).DataTable().columns().eq(0).each( function ( index ) { var column = this.column( index ).header(); columns.push($(column).html()); } ); csvstring += columns.map(th => '"' + th.replace('"', '\"') + '"').toString() + "\n"; $(this).DataTable().rows().every( function ( rowIdx, tableLoop, rowLoop ) { csvstring += this.data().map(value => '"' + value.replace('"', '\"') + '"').toString() + "\n"; } ); csvstring += "\n\n"; }); var hiddenElement = document.createElement('a'); hiddenElement.href = 'data:text/csv;charset=utf-8,' + encodeURI(csvstring); hiddenElement.target = '_blank'; hiddenElement.download = '<?=$pagetitle.date(' Ymd Hi-s')?>.csv'; hiddenElement.click(); });