Quería invertir la columna en los datos de exportación de DataTables. Busco un método para hacerlo y finalmente terminé de esta manera:
$(document).ready(function(){ var arrayCol = new Array(); var table = $('#example').DataTable({ dom: 'Bfrtip', initComplete:function ( ) { var len = this.api().columns().count(); var array = Array.from(Array(len).keys()) arrayCol = array.reverse(); }, buttons: [ { extend: 'excelHtml5', exportOptions: { columns: ':visible:not(.not-export-col)', orthogonal: 'export' } }, { extend: 'pdfHtml5', orientation: 'landscape', pageSize: 'A4', exportOptions: { columns: arrayCol, // this doesn't work //columns:[5,4,3,2,1,0], //this work orthogonal: 'export' } } ] }); }); El var arrayCol cuando se depura tiene valores, pero cuando se exporta a PDF, el PDF no tiene ninguna columna.
Tal vez no se asigne a columnas o algo así.
Creo que la forma más sencilla es invertir cada matriz de filas individual, ya que está exportando los datos. Puede usar exportOptions.rows para hacer esto.
También debe invertir los encabezados, lo que se puede hacer usando exportOptions.format.heeader . En este caso, solo tiene acceso a un campo de encabezado a la vez, por lo que se necesita un poco más de trabajo para crear una matriz invertida de valores de encabezado y luego acceder a cada ubicación de índice en esa matriz:
$(document).ready(function() { var table = $('#example').DataTable( { dom: 'Bfrtip', buttons: [ { extend: 'pdf', text: 'To PDF', exportOptions: { rows: function ( idx, data, node ) { return data.reverse(); }, format: { header: function ( data, idx, node ) { var headers = $('#example').DataTable().table().header(); var reversedHeaders = headers.innerText.split('\t').reverse(); return reversedHeaders[idx]; } } } } ] } ); } );Referencias: