2 agosto, 2026

EXPORTAR DATOS DE UNA GALERIA DE POWER APPS A EXCEL

Hola a todos,

Hoy vamos a toca uno de los temas más recurrentes cuando trabajamos en Power Apps, (bueno y en cualquier aplicación que no sea Excel), y es la famosa pregunta de, ¿se puede exportar a Excel?.

Pues bien, normalmente este tipo de funcionalidades las tenía cubiertas embebiendo un Power BI dentro de la App y desde ahí poder descargar toda la información, ya que, además, en BI tenemos un gran variedad de gráficos.

No obstante hoy os voy a mostrar un forma de exportar datos de una galería de Power Apps, pero teniendo en cuenta varios detalles importantes y que no suelo ver en las redes. Pero vamos por pasos, lo primero de todo es presentaros la aplicación de la que vamos a extraer la información (sí, he creado una aplicación para hacer el post y poder exportar los datos la manera más real posible).

Imaginad que tenemos una herramienta para grabar las notas de evaluación («Muy Buena»;»Buena»;»Mejorable») de los empleados de unos grandes almacenes y además determinar si pueden o no promocionar.:

Pues bien, como podéis observar tenemos unas serie de listas desplegables para ir filtrando los datos que queremos mostrar de nuestra galería. En caso de querer evaluar e indicar posibilidad de promoción, solo tenemos que activar el checkbox al lado del nombre y podremos grabar los datos:

Y una vez que estamos empezando a grabar los datos, es posible que nos interese descargar la información en Excel. Para ello vamos a hacerlo pasando los datos de la Galería a Power Automate en formato JSON y procesando la información para obtener nuestro archivo.

El primer paso es obtener los datos de la galería en formato JSON, esto se puede hacer de muchas formas, yo hoy os dejo dos maneras, o seleccionando columnas específicas de la galería o seleccionado todos los datos.

En el ejemplo que os pongo hoy, seleccionamos los campos que necesitamos usando ShowColumns()

Para ello el primer paso es incluir un botón que llamaremos Exportar a Excel e incluimos este código en la propiedad On Select:

Set(
    vJSON;
    JSON(
        ShowColumns(
            Gallery1.AllItems;
            'NOMBRE COMPLETO';
            SECCION;
            EDAD;
            SEXO;
            IDIOMA;
            ESTUDIOS;
            EVALUACION;
            PROMOCION
        );
        JSONFormat.IndentFour
    )
);;

Así:

Y ahora el siguiente paso es importante, este código va a recoger los datos que estemos filtrando en la galería y pasarlos a formato JSON, pero ojo, vamos a necesitar ese código para cuando realicemos el flujo de Power Automate, así que necesitamos extraer el contenido de la variable, para ello creamos una segunda pantalla en nuestra App e insertamos un label. A continuación en la propiedad Text incluimos la variable que hemos creado en el botón: vJSON

Y nos mostrará el contenido de lo que hemos seleccionado. Es importante que seleccionéis solo un ítem, así es más sencillo recoger la muestra del JSON. Luego esto lo seleccionamos y lo copiamos, al bloc de notas o podéis dejarlo aquí, pero habiéndolo seleccionado.

Y con esto ya podemos ir a por el flujo, es importante que os fijéis que aunque en el código del botón hemos seleccionado los campos Evaluación y Promoción, no aparecen en la muestra de JSON, eso es porque no tienen datos y por lo tanto no aparecen. Lo solucionaremos en el flujo.

Para iniciar el flujo debemos hacerlo desde Power Apps, Agregar Flujo > Crear desde cero:

Una vez que comenzado, le damos un nombre a nuestra flujo: EXPORTAR_A_EXCEL e indicamos un nombre para la entrada de datos, que será InputJSON:

El siguiente paso es añadir el Parse JSON, o en Español Análisis del archivo JSON:

Aquí nos vamos a parar un momento, lo que habíamos pegado en el bloc de notas es:

[
    {
        "EDAD": 56,
        "ESTUDIOS": "DIPLOMADOS",
        "IDIOMA": "NO CONSTA",
        "SECCION": "LENCERIA Y BAÑO",
        "SEXO": "MUJER",
        "Title": "BIETO RAMALLO, REMEDIOS"
    }
]

Y ahora en el campo contenido seleccionáis la salida del paso anterior que es InputJSON y en el esquema o bien lo redactamos o bien lo generamos desde la muestra. Lo mejor es hacerlo desde la muestra:

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "EDAD": {
                "type": "integer"
            },
            "ESTUDIOS": {
                "type": "string"
            },
            "IDIOMA": {
                "type": "string"
            },
            "SECCION": {
                "type": "string"
            },
            "SEXO": {
                "type": "string"
            },
            "Title": {
                "type": "string"
            }
        },
        "required": [
            "EDAD",
            "ESTUDIOS",
            "IDIOMA",
            "SECCION",
            "SEXO",
            "Title"
        ]
    }
}

Esto es lo que nos genera, pero como podéis observar, no aparece ni EVALUACIÓN ni PROMOCIÓN. Y esto sucede porque no hay datos, es decir, para Automate son valores nulos (null), por ello vamos a modificar el esquema generado de la siguiente forma:

{
    "type": "array",
    "items": {
        "type": "object",
        "properties": {
            "EDAD": {
                "anyof": [
                    {
                        "type": "integer"
                    },
                    {
                        "type": "null"
                    }
                ]
            },
            "ESTUDIOS": {
                "anyof": [
                    {
                        "type": "string"
                    },
                    {
                        "type": "null"
                    }
                ]
            },
            "IDIOMA": {
                "anyof": [
                    {
                        "type": "string"
                    },
                    {
                        "type": "null"
                    }
                ]
            },
            "SECCION": {
                "anyof": [
                    {
                        "type": "string"
                    },
                    {
                        "type": "null"
                    }
                ]
            },
            "SEXO": {
                "anyof": [
                    {
                        "type": "string"
                    },
                    {
                        "type": "null"
                    }
                ]
            },
            "Title": {
                "anyof": [
                    {
                        "type": "string"
                    },
                    {
                        "type": "null"
                    }
                ]
            },
            "EVALUACION": {
                "anyof": [
                    {
                        "type": "string"
                    },
                    {
                        "type": "null"
                    }
                ]
            },
            "PROMOCION": {
                "anyof": [
                    {
                        "type": "string"
                    },
                    {
                        "type": "null"
                    }
                ]
            }
        },
        "required": []
    }
}

En primer lugar y para evitar problemas eliminamos los campos de Required y en el resto de campos añadimos el tipo nulo para que no genere error, esto se hace:

"EDAD": {
                "type": "integer"
            },

por esto:

"EDAD": {
                "anyof": [
                    {
                        "type": "integer"
                    },
                    {
                        "type": "null"
                    }
                ]
            },

Y así con todos. Y a continuación siguiendo el mismo esquema, añadimos EVALUACIÓN y PROMOCIÓN:

"EVALUACION": {
                "anyof": [
                    {
                        "type": "string"
                    },
                    {
                        "type": "null"
                    }
                ]
            },
            "PROMOCION": {
                "anyof": [
                    {
                        "type": "string"
                    },
                    {
                        "type": "null"
                    }
                ]
            }
        },

Para obtener el nombre de los campos que no os aparecen os aconsejo hacerlo de esta forma, os vais a la lista de SharePoint, a configuración y pulsáis en uno de los campos:

Y automáticamente veremos como se abre un enlace externo de donde copiaremos el nombre, esto es importante, porque si el campo tiene espacios o tildes, se escribe con caracteres diferentes.

Bien, ahora seguimos con el flujo, y el siguiente paso es crear una tabla CSV. Seleccionamos el Cuerpo o Body del paso anterior y en Columnas especificamos las que nos interesan (si no lo hacemos se crean con el mismo nombre del campo y por orden alfabético), con el encabezado que queramos y en el orden que nos interese:

Nota, si no hubíesemos especificado en el paso anterior lo de tratar los nulos, los valores de EVALUACIÓN y PROMOCIÓN no aparecerían aquí:

Y ahora el siguiente paso es crear el archivo en OneDrive, donde vamos a especificar que el contenido vaya a Documentos, y en Nombre de archivo indicamos esta fórmula para que cada archivo generado sea distinto, lo hacemos con la hora:

concat(utcNow(),'.CSV')

Y para que se tengan en cuenta los caracteres especiales, en contenido añadimos esto:

concat(uriComponentToString('%EF%BB%BF'),body('Crear_tabla_CSV'))

Las variables se insertan en Expresión, ejemplo: el nombre del archivo. Lo mismo para el contenido:

El siguiente paso es crear el link del archivo de descarga, añadiendo Crear un Vínculo para Compartir:

En Identificador seleccionamos la salida del paso anterior. Indicamos Edit y en el ámbito Organización.

Para finalizar añadimos el último paso que es la respuesta que vamos a dar a Power Apps en el final del flujo, el nombre que le daremos es OutPut y seleccionaremos Url web del paso anterior:

Y ay tenemos nuestro flujo completo, ahora guardamos y verificamos que todo sea correcto.

Y el siguiente paso es ir a nuestro botón y añadir esta parte del código para ejecutar la variable que acabamos de recuperar de Automate y además descargar los datos:

Set(
    MiOutPut;
    EXPORTAR_A_EXCEL.Run(vJSON).output
);;
Download(MiOutPut);;

Por ejemplo queremos exportar estos datos a Excel, si pulsamos el botón se generará el archivo:

Y este es el resultado:

Y esto es todo, espero que sea de utilidad.

Si el archivo que se genera no se dividen los datos en columnas, debéis configurar el delimitador de vuestro Excel Online y cambiarlo a coma o a punto y como, según sea vuestra circunstancia.

Nota: Siempre va a descargar lo que aparece cargado en la Galería., por defecto la galería carga 100 ítems de una vez, luego es necesario hacer scroll para cargar más info (o con paginar la subida de una colección).

Comparte este post

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