Buenos días!!
Tal y como os comentaba en el post de ayer: AJUSTE FIJO CON MISMO ANCHO DE COLUMNA EN TODAS LAS HOJAS CON TYPESCRIPT, en el post de hoy voy a mostrar como dar ancho fijo a una columna con un nombre o encabezado en concreto.
Es decir, vamos a tener que pasar un loop por todas las hojas y otro bucle que recorra todas las columnas para obtener el valor de la primera celda y aplicar la condición y ancho de columna (ojo, que existen otros métodos para hacer esto, pero hoy propongo así la solución).
El código que vamos a usar en nuestro script será este:
async function main(workbook: ExcelScript.Workbook) {
var nHojas = workbook.getWorksheets();
//recorremos todas las hojas
nHojas.forEach((sheet) => {
//detectamos el número de columnas de cada hoja
var fin = sheet.getUsedRange().getColumnCount();
//recorremos las columnas
for (var i = 0; i < fin; i++) {
//aplicamos ancho según nombre del campo
var campo= sheet.getCell(0,i).getValue();
if (campo=='ID') {
sheet.getCell(0, i).getFormat().setColumnWidth(20);
} else if (campo == 'NOMBRE COMPLETO') {
sheet.getCell(0, i).getFormat().setColumnWidth(150);
} else if (campo == 'SECCION') {
sheet.getCell(0, i).getFormat().setColumnWidth(150);
} else if (campo == 'EDAD') {
sheet.getCell(0, i).getFormat().setColumnWidth(30);
} else if (campo == 'SEXO') {
sheet.getCell(0, i).getFormat().setColumnWidth(50);
} else if (campo == '2 º IDIOMA') {
sheet.getCell(0, i).getFormat().setColumnWidth(80);
} else if (campo == 'ESTUDIOS') {
sheet.getCell(0, i).getFormat().setColumnWidth(130);
}
}
});
}
Como indicaba más arriba, estamos recorriendo todas las hojas y todas las columnas. Obteniendo el valor de la primera celda:
var campo= sheet.getCell(0,i).getValue();
Y aplicando el ancho de columna para cada nombre en concreto:
if (campo=='ID') { sheet.getCell(0, i).getFormat().setColumnWidth(20); }
El ancho de píxeles que se aplica en el código no se traduce exactamente en el ancho de píxeles que podemos luego comprobar en la cinta de opciones. Os recomiendo seguir una regla: en el código (80) equivale en la columna de Excel a un ancho de 107 px, con esto podréis obtener con una regla de tres el número a indicar en el código.
Y esto es todo, espero que sea de utilidad.
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
Mediante la suscripción al blog, la realización comentarios o el uso del formulario de contacto estás dando tu consentimiento expreso al tratamiento de los datos personales proporcionados según lo dispuesto en la ley vigente (LOPD). Tienes más información al respecto en esta página del blog: Política de Privacidad y Cookies