Hola a todos!
Hoy voy a realizar dos publicaciones, una sobre Power Apps y otra (esta) sobre Office Scripts (Typescript). En concreto me quiero centrar en una forma muy sencilla de recorrer las tablas de un libro y aprovechar para extraer información que nos pueda ser de utilidad.
Vamos a plantear el siguiente ejemplo, donde tenemos un libro con tres hojas y en cada una de ellas hemos incluido varias tablas. En la primera hoja dos tablas (Género y Edad), en la segunda hoja una tabla (Sección) y en la tercera (Estudios).
Pues bien, lo que vamos a hacer cuando ejecutemos nuestro script es crear una hoja al final que se llamará Detalles y en la que vamos a incluir el nombre de todas las tablas con el recuento de sus registros y el nombre de la hoja en la que se encuentran.
Para ello ha programado el siguiente código:
function main(workbook: ExcelScript.Workbook) {
//comprobamos si existe la hoja detalles, si existe la eliminamos
workbook.getWorksheet('Detalles')?.delete();
//si no existe la creamos
workbook.addWorksheet('Detalles');
//creamos encabezados
var miHoja = workbook.getWorksheet("Detalles");
var titulos = ["NOMBRE TABLA", "NUMERO REGISTROS", "HOJA DEL LIBRO"]
//pegamos encabezados en la hoja Detalles
miHoja.getRange("A1:C1").setValues([titulos])
//activamos y justicamos ancho de columna de la hoja Detalle
miHoja.activate();
miHoja.getRange("A:C").getFormat().autofitColumns();
//establecemos un contador
var cont = 1
// obtenemos detalle de todas las tablas del libro
var tables = workbook.getTables();
//iniciamos loop por cada tabla
for (var ntabla of tables) {
//obtenemos nombre, total de registros y hoja en la que está cada tabla
var nombre = ntabla.getName();
var registros = ntabla.getRowCount();
var hoja = ntabla.getWorksheet().getName();
//pasamos la info a la hoja Detalle
miHoja.getCell(cont, 0).setValues([
[nombre]
]);
miHoja.getCell(cont, 1).setValues([
[registros]
]);
miHoja.getCell(cont, 2).setValues([
[hoja]
]);
cont = cont + 1
}
}
Y este es el resultado (el esperado) de nuestro proceso:
Como siempre, en el código os he dejado todo comentado línea a línea.
La parte más importante de este post es cómo obtenemos todas las tablas del libro y como las recorremos. Como podéis ver lo hacemos con solo dos líneas de código:
// obtenemos detalle de todas las tablas del libro
var tables = workbook.getTables();
//iniciamos loop por cada tabla
for (var ntabla of tables) { }
Y esto es todo, espero que os haya parecido interesante!!
¿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