Saltar al contenido

Cómo establecer el ancho de celda al exportar archivos .xlsx con js-xlsx

Puede que se de el caso de que halles alguna incompatibilidad con tu código o proyecto, recuerda probar siempre en un ambiente de testing antes aplicar el código al proyecto final.

Encontré un fragmento de la prueba de escritura aquí https://github.com/SheetJS/js-xlsx/blob/master/tests/write.js#L14-L19

Para referencia rápida, donde ws es su hoja de trabajo.

var wscols = [
    wch:6,
    wch:7,
    wch:10,
    wch:20
];

ws['!cols'] = wscols;

Ampliando la pregunta, si necesita establecer una base de ancho automático en su contenido, puede escribir lo siguiente:

const worksheet = XLSX.utils.aoa_to_sheet(arrayOfArray);
worksheet['!cols'] = fitToColumn(arrayOfArray);

function fitToColumn(arrayOfArray) 
    // get maximum character of each column
    return arrayOfArray[0].map((a, i) => ( wch: Math.max(...arrayOfArray.map(a2 => a2[i].toString().length)) ));

Esta función asume que su primera fila tiene la mayoría de las columnas. A continuación, intenta encontrar la celda más ancha de cada columna calculando la longitud de los caracteres del contenido.

Similar al ancho de la celda, puede establecer la altura de la celda de la siguiente manera

var wsrows =  [
                 hpt: 12, // row 1 sets to the height of 12 in points
                 hpx: 16, // row 2 sets to the height of 16 in pixels
               ];

ws['!rows'] = wsrows; // ws - worksheet

Insinuación: Si los datos de su hoja de trabajo se generan automáticamente y no sabe cuántas filas y columnas se llenan, entonces podría usar la siguiente forma de encontrar la cantidad de filas y columnas en la hoja de trabajo para hacer el formato de ancho/alto de celda.

var range = XLSX.utils.decode_range(ws['!ref']);
var noRows = range.e.r; // No.of rows
var noCols = range.e.c; // No. of cols

Al final de todo puedes encontrar las reseñas de otros sys admins, tú además eres capaz mostrar el tuyo si lo crees conveniente.

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


Tags :

Utiliza Nuestro Buscador

Deja una respuesta

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