Cómo usar Power Automate para leer archivos grandes de Excel

Dado que los archivos de Excel son una de las entidades más comúnes en cuanto se refiere a almacenamiento de datos, el poder convertirlos o abrirlos en otros programas siempre es algo que nos vendrá útil. En este caso, vamos a mostrar cómo analizar con Power Automate un archivo de Excel y hacer que se lea cada una de sus filas. Para poder ahondar bien en este tema, lo vamos a dividir en dos secciones:

  1. Analizar un archivo de Excel en Power Automate (Flujo de MS)
  2. Extraer información de un archivo GRANDE de Excel en Power Automate (Flujo de MS)

ANALIZAR ARCHIVO DE EXCEL EN POWER AUTOMATE

Este proceso es bastante sencillo de lograr con Power Automate. Por defecto, nosotros tenemos una acción, llamada «Lista de filas presentes en una tabla».

archivo grande Excel Power Automate 1

Como podemos observar, en sus opciones básicas obtenemos cuatro parámetros:

  • Ubicación: es el URL del sitio de SharePoint en donde está almacenado nuestro archivo de Excel
  • Directorio del documento: es el nombre de la biblioteca del documento
  • Archivo: aquí seleccionamos el nombre del archivo
  • Tabla: aquí seleccionamos cuál tabla queremos que sea analizada del archivo de Excel

Con proveer estos cuatro parámetros, nuestro Flujo será capaz de analizar el archivo de Excel designado. Es importante tomar en cuenta que para analizar tablas en un archivo de Excel, los datos deben estar definidos en una tabla.

Si no sabes cómo definir tu rango como tabla, revisa esta entrada.

Y si te gustaría aprender a usar la herramienta, puedes checar nuestro curso con licencia aquí.

EXTRAER INFO DE ARCHIVOS GRANDES DE EXCEL EN POWER AUTOMATE

El método anterior nos servirá bien para archivos pequeños, pero solo archivos pequeños. Si nuestro archivo de Excel tiene más de 5,000 filas, entonces este método no nos funcionará. De hecho, y por defecto, tan solo analizará 255 filas.

Para leer todas las filas de un archivo de Excel grande, necesitamos leer datos recursivamente por montones, tal y como se explica en este diagrama de flujo:

batch Power Automate

Iniciaremos con una variable «isContinue» para indicar si queremos o no que busque más filas de Excel. Este valor lo tendremos por defecto como true.

variable booleano Power Automate

Iniciaremos otra variable, «skipCount». Esta denotará el número de filas a saltar. Por defecto el valor estará establecido en cero, pero tras descargar cada conjunto de filas, se irá incrementando este valor.

1

Y una ultima variable que nos permitira contar las filas por cada batch.

2

Ahora viene el elemento más crucial, «Do until». Para esto, habrá que especificar primero la condición de quiebre, como lo puede ser el cuándo se acabe este loop. Para este caso, cuando la variable «isContinue» se vuelva falsa, entonces podemos acabarlo.

Antes de proceder, hay que cambiar los límites por defecto de «Do until». Aquí hemos establecido la cuenta a 5000 y el tiempo límite a P5D, que son cinco días.

El bloque Do para grándes archivos de Excel

A continuación usaremos «Lista de filas presentes en una tabla» para descargar el primer montón de 5,000 filas. Antes de usar nuestra lógica, necesitaremos cambiar el ajuste de esta acción para que haga paginación:

paginacion Excel Power Automate

La configuración básica de esta acción «Lista de filas presentes en una tabla» deberá ser tal y como se mostró en el primer método, con la diferencia de que vamos a modificar sus configuraciones avanzadas. Estableceremos el conteo máximo a 5,000 (pues es el máximo posible) y «saltar cuenta» a nuestra variable dinámica «skipCount», la cual será cero por defecto. En pocas palabras, pediremos que nos dé las primeras 5,000 filas del archivo de Excel. La próxima vez pediremos que descargue de la 5,001 a la 10,000 y así seguiremos tanto como sea necesario.

archivo grande Excel Power Automate 3

Una vez que las filas hayan sido buscadas, revisaremos si la cuenta de filas descargadas es igual a 5,000 o si es menos. Si la cuenta es de 5,000, entonces puede que haya más filas que necesiten ser descargadas; de resultar menos de 5,000, entonces podremos estar seguros de que este es el último montón y que no hay más filas para descargar.

4

Para poder hacer esto bien, vamos a calcular el largo del valor de propiedad de la acción anterior.

length(body('List_rows_present_in_a_table')?['value'])

Procesar el primer bloque y repetir

Aquí podemos usar «aplicar a cada una» para procesar cada fila de Excel que se descargó. En este caso, solo vamos a estar incrementando el valor del contador de fila.

archivo grande Excel Power Automate 4

Nota: En nuestro flujo, aquí es donde deberemos escribir la lógica para procesar cada una de las filas de Excel. Recuerda cambiarlo por el que necesites.

Por último, vamos a incrementar la variable del valor de contador «skipCount» a 5,000. Por lo cual, para descargar el siguiente montón de 5,000 filas:

5

De todo este proceso podemos notar varias cosas, como que estos métodos son muy específicos, por lo que hay que ser claros a la hora de introducir las rutas y nombres de los archivos para que se puedan hacer los análisis en los archivos correctos. También podemos notar que, por defecto, solo un número pequeño de filas será regresado, lo cual puede sernos útil en la mayoría de los casos.

Para archivos grandes, necesitamos descargar las filas de manera secuencial, y cada grupo no debe ser mayor a 5,000 filas. Es importante mencionar también que con este método solo se pueden leer datos desde una tabla de Excel, por lo que no se podrán analizar filas simples.

Puedes mejorar la velocidad de tu flujo haciendo algo similar al video.

Cualquier duda nos leemos abajo.

Cómo usar Power Automate para leer archivos grandes de Excel

15 comentarios en «Cómo usar Power Automate para leer archivos grandes de Excel»

  1. Hola,
    ¿Cómo lo harías para que añada un registro en Excel que sume uno al número de factura, que tenga el formato «nºfactura/año actual», cada vez que se cree un registro en una lista de SharePoint?

    Muchas gracias por tus vídeos. Me están dando el conocimiento necesario para introducirme en este mundo.

    Saludos,

    José Luis

    1. Hola Jose Luis.
      La forma de hacerlo es algo confusa.
      Básicamente necesitas partir tu texto en una variable hasta antes del / usando las funciones subString + indexOf. Luego a ese valor que sale convertirlo en entero y sumarle un uno. Si bien se oye simple, corres el riesgo de que se ejecute el flujo al mismo tiempo por dos personas diferentes y tengas un numero duplicado, por lo que necesitas activar la opción de ocurrencias de tu trigger.

      Una forma alterna de hacerlo seria tomar el id del ultimo valor registrado y sumarle un para agregarlo al nombre, es mas fácil y es continuo.
      Saludos!

  2. Hola. Que significa este tipo de error? Alguien sabe?
    «La respuesta del esquema dinámico de la operación «GetTable» de la API «excelonlinebusiness» es demasiado grande. Solo se admiten esquemas con un máximo de «1024» propiedades.»

    1. Hola Robert.
      Ese error ocurre cuanto tu tabla tiene más de 1024 columnas regularmente.
      Asegurate que en tu Excel tu tabla este limitada a las columnas con datos e intenta de nuevo.
      Si aún tienes problemas, mandame un correo a svallejo@excelcute.com con más detalles y lo revisamos.
      ¡Saludos!

  3. Que tal, esta muy bueno esto, voy a probarlo aunque tengo algunas dudas previas, se que el tiempo de ejecución del flujo depende de las dimensiones de la tabla pero para los 30,000 registros ¿cuánto tiempo tomó aproximadamente?

  4. esto esta genial, pero en una tabla con 23000 lineas… hace bien los loops 1 y 2 y luego empieza a repetir el 1 interminablemente.

      1. Hola buenas,

        ¿Podrías volver a compartir el flujo para un excel con una tabla con muchas filas? En mi caso el excel tiene más de 16000 y aunque tengo el flujo correcto, el Do until no me funciona, solo coge los primeros 5000 valores y aunque la condición sigue activa no coge más.

        Gracias!

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Scroll hacia arriba