25 septiembre, 2023

CONSOLIDAR HOJAS DE UN LIBRO DE EXCEL ONLINE CON TYPESCRIPT E INDICAR EL ORIGEN DE LOS DATOS

Hola a todos!

Hace unas semanas publiqué un método para consolidar el contenido de tantas hojas como tengamos en un archivos de Excel utilizando Typescript: CONSOLIDAR HOJAS DE UN LIBRO DE EXCEL ONLINE CON TYPESCRIPT

Y aunque el script funciona fenomenal, hay algo que faltaba y era el crear una columna en la que se indicase la hoja de la que procedía cada fragmento.

La solución que he aplicado ha sido la siguiente, este es script:

async function main(workbook: ExcelScript.Workbook) {
  var nHojas = workbook.getWorksheets();
  var resultado = workbook.getWorksheet("RESULTADO");
  //creamos títulos
  var titulos = ["ID", "NOMBRE COMPLETO", "SECCIÓN", "NACIMIENTO", "2º IDIOMA", "ESTUDIOS","HOJA"]
  resultado.getRange("A1:G1").setValues([titulos])
  //por cada hoja que no sea RESULTADO
  nHojas.forEach((sheet) => {
    var hoja = sheet.getName()
    if (hoja != 'RESULTADO') {
      var filas = sheet.getUsedRange().getRowCount();
      var columnas = sheet.getUsedRange().getColumnCount();
      var mFila = +resultado.getUsedRange().getRowCount();
      var nFila = sheet.getUsedRange().getRowCount();
      //copiamos rango de hoja con datos y lo pegamos en hoja RESULTADO
      resultado.getRange("A" + (mFila + 1)).copyFrom(sheet.getRangeByIndexes(1, 0, filas, columnas), ExcelScript.RangeCopyType.all);
      resultado.getRange("G" + (mFila + 1) + ":" + "G" + (mFila + nFila - 1)).setValue(hoja);
      resultado.activate();
    }
  });
}

Para que podamos mostrar la hoja de la que procede cada contenido debemos crear una variable que nos permita contar las filas de cada fragmento de datos que vayamos a consolidar, en este caso la variable es nFila.

Una vez con este dato, solo tendremos que componer un rango para indicar el valor con el que lo queremos rellenar, es decir, el nombre de la hoja:

resultado.getRange("G" + (mFila + 1) + ":" + "G" + (mFila + nFila - 1)).setValue(hoja);

El resultado es perfecto, en la columna G he colocado el nombre de la hoja en la que se encuentra cada fragmento consolidado:

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.

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