Ejemplo: convertir Excel en JSON
En este ejemplo enseñamos cómo crear un documento JSON a partir de un archivo Excel con MapForce. El libro Excel de origen consiste en dos hojas de cálculo: Office y Staff. La hoja de cálculo Office contiene información sobre la dirección de la empresa, mientras que Staff contiene la lista de todos los empleados.
Hoja de cálculo
Los requisitos empresariales para este ejemplo son:
1.Extraer datos del archivo Excel y convertirlos en un documento JSON.
2.El archivo JSON debe indicar, en el caso de cada empleado, si su extensión telefónica se puede compartir para contratos externos. Solamente se pueden compartir de forma externa las extensiones de los empleados de los departamentos "Marketing" y "Administration".
3.El número de acciones de cada uno de los empleados se debe indicar en el archivo JSON como valor numérico, incluyendo el cero. Si se desconoce este número, las acciones se deben indicar como null en el archivo JSON.
La imagen siguiente ilustra la asignación que se encarga de obtener el objetivo descrito más arriba. Esta asignación está disponible en la siguiente ruta: <Documentos>\Altova\MapForce2023\MapForceExamples\\Excel_Company_To_JSON.mfd.
Excel_Company_To_JSON.mfd
Como se ve en la imagen, la asignación consiste en un componente Excel de origen y un componente JSON de destino. Observe que las dos hojas de cálculo del archivo Excel están en el componente Excel de origen. El nombre de la empresa está asignado desde la hoja Office, mientras que el resto de campos están asignados desde la hoja Staff. Para ver cómo está configurada la asignación para leer los datos de las filas de cada hoja de cálculo haga clic en el botón correspondiente. A continuación se muestra la configuración para la hoja de cálculo Staff.
La configuración anterior indican a la asignación que lea las filas dinámicamente empezando por la número 1 y hasta el final. La primera fila es un encabezado con nombres de columna, por lo que está marcada la casilla La primera fila es el encabezado con los nombres de las columnas. El cuadro de diálogo también indica el rango de columnas A a G y el nombre con el que cada columna aparece en la asignación. Para más información sobre componentes Excel consulte Microsoft OOXML Excel 2007+.
El componente de destino es una estructura JSON. Puede añadir componentes JSON a la asignación como se describe en Agregar archivos JSON como componentes de asignación. La estructura refleja el esquema JSON, employees.schema.json, que está disponible en la misma carpeta que la asignación. Para más información sobre cómo configurar el componente JSON consulte Configuración de componentes JSON.
En la asignación también hay varios componentes intermedios. El primero es un componente de asignación de valores. Este componente decide, en función del departamento, si un número de teléfono se puede compartir de forma externa. Esta acción se corresponde con el segundo de los requisitos empresariales descritos más arriba. Puede ver la configuración del componente de asignación de valores haciendo doble clic en su barra de título.
La configuración anterior se puede resumir así: si Department es "Administration" o "Marketing", el valor devuelto es true. De lo contrario es false. El valor true o false así computado luego se escribe en la propiedad JSON de destino. Para más información sobre asignaciones de valores consulte Usar asignaciones de valores.
Por último, la asignación usa la función exists, cuyo objetivo es determinar, dentro del contexto de cada fila, si existe un valor Shares (se comparte) en el archivo Excel de origen. Esta función devuelve el booleano true si el valor existe y false en caso contrario. El valor resultante, sea true o false, se da a continuación como entrada a una condición If-Else. Si el valor es false, entonces se pasa al elemento de destino Shares as null una cadena vacía suministrada por una constante. Este valor vacío se convertirá en null en el archivo JSON resultante porque este es el tipo de datos del elemento Shares as null, como indica el icono .
Si el valor share del empleado es numérico dejará de cumplir la condición If-Else y pasará a escribirse en el elemento de destino Shares as number (que es de tipo numérico ) con una conexión distinta.
Para más información sobre agregar funciones a una asignación consulte Agregar una función integrada a una asignación de datos. Las condiciones If-Selse se explican con más detalle en el apartado Filtros y condiciones.
Ejecutar la asignación
Para acceder a una vista previa del archivo generado en MapForce haga clic en la pestaña Resultados. La imagen siguiente ilustra solamente un fragmento del archivo JSON resultante.
Resultado de la asignación
Para guardar los resultados de la asignación en un archivo, elija una de estas opciones:
•Vaya al menú Resultados y haga clic en Guardar el archivo de salida.
•Haga clic en el botón de la barra de herramientas Guardar resultado generado .
Automatización con MapForce Server
Si tiene un MapForce Server con licencia, entonces también puede ejecutar la asignación desde la línea de comandos, tanto en equipos con sistema operativo Linux, macOS o Windows. Observe que para ejecutar asignaciones en un servidor normalmente es necesario seguir ciertos pasos adicionales, como se explica en el apartado Preparar asignaciones para ejecutarlas en servidores. Estos son los pasos necesarios para ejecutar en un servidor esta asignación en concreto:
1.Haga clic con el botón derecho en la asignación y seleccione Configurar asignación en el menú contextual. Desmarque la casilla Convertir las rutas de acceso en absolutas en el código generado y guarde la asignación.
2.En el menú Archivo haga clic en Compilar en archivo de ejecución de MapForce Server para generar un archivo ejecutable .mfx en el directorio <Documentos>\Altova\MapForce2023\MapForceExamples\.
3.Copie el archivo .mfx generado a un directorio en el equipo servidor (lo llamaremos "directorio de trabajo").
4.Copie el archivo Excel de <Documentos>\Altova\MapForce2023\MapForceExamples\\Nanonull Inc.xlsx en el directorio de trabajo del equipo servidor.
5.Abra un terminal y cambie el directorio actual al directorio de trabajo.
6.Ejecute MapForce Server con el comando siguiente. Ajuste la ruta de mapforceserver_exec para que lleve al ejecutable de MapForce Server en su sistema operativo.
mapforceserver_exec run Excel_Company_To_JSON.mfx |
Al ejecutar el servidor también puede ejecutar asignaciones como llamadas a API o como trabajos de FlowForce, sea a petición o de forma recurrente. Para más información consulte Compilar asignaciones en archivos de ejecución de MapForce Server.