Hola a todos:
Espero que estéis todos bien! Hoy de nuevo vamos a trabajar con typescript y lo vamos a hacer con un script que me ha gustado mucho programar. Se trata del método findAll(), con el que vamos a poder buscar valores en nuestras hojas de cálculo de Excel Online.
Sobre la documentación existente de este método tenemos aquí algo de información. Y aunque se nos ofrece un ejemplo de código, en mi caso no es suficiente dado que necesitaré hacer una búsqueda más extensa.
Os propongo el siguiente ejemplo, imaginad que tenemos en un archivo de Excel con 4 hojas, una serie de nombres de razas de gatos, en el imagen os indico listado de razas por hoja.
![](https://i0.wp.com/excelsignum.com/wp-content/uploads/2022/02/PROGRAMAR-METODO-FINDALL-EN-TYPESCRIPT-Y-BUSCAR-VALORES-EN-VARIAS-HOJAS.png?resize=717%2C428&ssl=1)
Y queremos realizar una búsqueda de 3 razas y que cuando sean encontradas se marque en amarillo y el sistema nos diga que raza ha sido encontrada y en qué hoja.
Las razas a buscar, voy a poner mis preferidas, son: [‘Savannah’, ‘Bengala’, ‘Caracal’]. Ojalá algún día pueda llegar a tener alguna de ellas.
Pues bien, para realizar la búsqueda vamos a utilizar el siguiente código:
async function main(workbook: ExcelScript.Workbook) {
let nHojas = workbook.getWorksheets();
let valores = ['Savannah', 'Bengala', 'Caracal'];
valores.forEach(items => {
//recorremos todas las hojas y buscamos los valores indicados
nHojas.forEach((sheet) => {
let busca = sheet.findAll(items, {
//coincidencia completa
completeMatch: true,
//distinguir mayúscula de minúscula
matchCase: true,
});
//si encuentra pinta de amarillo, caso contrario, capturamos el error.
try {
busca .getFormat().getFill().setColor("FFFF00");
console.log("El valor " + items + " ha sido encontrado en la " + sheet.getName())
} catch (error) {}
});
});
}
He intentado ser lo más claro posible a la hora de comentar cada paso. Pero en resumen, creamos una matriz con los valores a buscar y generamos un loop por cada valor que será buscado en cada hoja del libro. La coincidencia será exacta, y se tendrán en cuenta mayúsculas y minúsculas.
Si se encuentra el valor, lo marcamos en amarillo y mostramos mensaje en la consola indicando hoja y valor encontrado.
Este sería el resultado:
![](https://i0.wp.com/excelsignum.com/wp-content/uploads/2022/02/PROGRAMAR-METODO-FINDALL-EN-TYPESCRIPT-Y-BUSCAR-VALORES-EN-VARIAS-HOJAS2.png?resize=1024%2C474&ssl=1)
Como podéis observar en la captura de pantalla, se marcan los valores buscado y en la parte inferior del editor de código vemos los mensajes informativos.
Pues esto ha sido 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