20 mayo, 2024

RECORRER TODAS LAS TABLAS DE UN LIBRO Y OBTENER INFORMACIÓN SOBRE ELLAS CON TYPESCRIPT

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.

Donate Button with Credit Cards

¡¡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

Comparte este post

Si te ha gustado o tienes alguna duda, puedes dejar aquí tu comentario.

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.plugin cookies

ACEPTAR
Aviso de cookies