Saltar al contenido

Datatables / TableTools: formato de datos como texto al exportar a Excel

Recabamos por internet para darte la respuesta para tu problema, si continúas con dificultades puedes dejarnos tu duda y te respondemos con gusto.

Solución:

Probé la primera opción dada por Aureltime pero encontré un pequeño efecto secundario. Si la columna solo contiene números y utiliza la función de representación, la opción de clasificación no funciona. Con suerte, a partir de la versión 1.10.12 de tablas de datos, hay una nueva opción para personalizar los datos antes de crear el archivo de Excel.

En esta función de personalización agregué el /u002C y funciona perfecto, incluso la ordenación de números.

        "buttons": [
            extend: 'excel',
            exportOptions: 
                orthogonal: 'sort'
            ,
            customizeData: function ( data ) 
                for (var i=0; i

Tengo la solución a este problema.

Me rompió la cabeza mucho tiempo... Así que la explicación está debajo de esto:

  1. La solución funciona bien en DatatableJS versión 1.10.11 (para la opción de exportación HTML Excel)
  2. Abra datatables.js y busque esto: "DataTable.ext.buttons.excelHtml5 = {"
  3. Busca en las siguientes líneas hasta tomar este código, y coméntalo:

             cells.push( typeof row[i] === 'number' || (row[i].match && $.trim(row[i]).match(/^-?d+(.d+)?$/) && row[i].charAt(0) !== '0') ?
                ''+row[i]+'' :
                ''+(
                    ! row[i].replace ?
                        row[i] :
                        row[i]
                            .replace(/&(?!amp;)/g, '&')
                            .replace(//g, '>')
                            .replace(/[x00-x09x0Bx0Cx0E-x1Fx7F-x9F]/g, ''))+ // remove control characters
                ''                                                      // they are not valid in XML
            );
    
  4. Pon este nuevo código:

                cells.push( ''+(
                            ! row[i].replace ?
                                row[i] :
                                row[i]
                                    .replace(/&(?!amp;)/g, '&')
                                    .replace(//g, '>')
                                    .replace(/[x00-x09x0Bx0Cx0E-x1Fx7F-x9F]/g, ''))+ // remove control characters
                        ''                                                      // they are not valid in XML
                    );
    
  5. Guarde sus tablas de datos.js

  6. ¡Disfruta de tus sagradas celdas de texto para siempre!

Esta solución ayuda a mantener el número, la fecha y el formato decimal.

Cambié el código para obligar a escribir en formato de texto todos los valores del HTML al XLSX.

Si alguien tiene alguna pregunta sobre esta solución, intentaré responder a todas las preguntas.

Gracias a todos.

TableTools no crea un realexcel archivo, crea un csv archivo en su lugar. Esos contienen solo datos sin procesar, sin formato. Aunque los ceros iniciales están ahí, Excel normalmente no los mostrará. Aquí tienes varias opciones:

  • cambiar el formato desde dentro de Excel
  • abre el csv desde el cuadro de diálogo abierto de Excel, desde el cual debería poder marcar columnas como texto (es posible que deba cambiar el tipo de archivo a txt)
  • agregar comillas alrededor de los datos
  • crear un real archivo de Excel a través de alguna biblioteca externa

Si te gusta el asunto, tienes la habilidad dejar una crónica acerca de qué le añadirías a este ensayo.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *