Necesito agregar un botón para descargar el contenido de la tabla de datos como un archivo de texto. Solo tengo una columna en la tabla de datos. Mi código se da a continuación. Copiar, excel, csv, pdf e imprimir funcionan correctamente con el siguiente código.
$(document).ready(function () { $('#dataTableExample').DataTable({ "lengthMenu": [[10, 25, 50, -1], [10, 25, 50, "All"]], dom: 'Bfrtip', buttons: [ { extend: 'copyHtml5', footer: true }, { extend: 'excelHtml5', footer: true }, { extend: 'csvHtml5', footer: true }, { extend: 'pdfHtml5', footer: true } ], }); });Los botones integrados de DataTables no admiten la exportación de una sola columna como un archivo de texto sin formato. Sin embargo, puede lograr esto definiendo su propio botón con una acción personalizada .
El fragmento a continuación debería lograr lo que está buscando, se puede agregar a la matriz de buttons pasada a DataTable en la configuración. Esto agrega un botón llamado 'TXT' que toma los valores filtrados de la primera columna de la tabla, los une luego con CR+LF y luego activa una descarga del resultado como un archivo .txt.
{ text: 'TXT', action: function (e, dt, node, config) { // Generate the text to be exported // Please note... // - This only takes column 0 // - The output is filtered based on the applied search // - This doesn't include the header or footer // - This uses CR+LF line endings let text = dt.columns(0, { search: 'applied' }).data().toArray()[0].join('\r\n'); // Add an element to the page contianing the encoded txt to download // click the element to trigger the download, then remove the element let element = document.createElement('a'); element.setAttribute('href', 'data:text/plain;charset=utf-8,' + encodeURIComponent(text)); element.setAttribute('download', 'data.txt'); element.style.display = 'none'; document.body.appendChild(element); element.click(); document.body.removeChild(element); } }Se puede ver un ejemplo práctico en https://jsfiddle.net/a3eucptL/ .