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.