Comunicación con hojas de cálculo de Excel

Para la conexión a hojas de cálculo (tanto para datos de entrada como de salida), AnyLogic ofrece varias alternativas. Hay dos opciones para principiantes:

  • Importe los datos de la hoja de cálculo a la base de datos de AnyLogic o

  • Conecte directamente la hoja de trabajo como un objeto dentro de AnyLogic.

Importación de datos de Excel a la base de datos de AnyLogic

En este caso, los datos en su hoja de cálculo de Excel deben tener una "cara tabular", porque, en AnyLogic, cada carpeta de Excel se importará a su propia tabla de base de datos y [¡importante!] La primera fila de la hoja de cálculo se utilizará como título de las columnas de la tabla. Por lo tanto, no use acentos ni celdillas en la primera línea de la hoja de trabajo.

Por ejemplo, considere la siguiente hoja de cálculo de Excel:

Para importar la hoja de cálculo a la base de datos, siga estos pasos::

  • Haga clic con el segundo botón del mouse en el icono Database, en la pestaña de proyectos y seleccione la opción: Import database tables;

  • Localice su archivo de Excel (o tabla de base de datos);

  • Seleccione, si corresponde, las carpetas que desea importar y presione el botón OK.

En el ejemplo, la hoja de cálculo se importó como una tabla y, con dos clics en su icono, puede ver los datos almacenados:

El uso de los datos de la tabla se puede hacer directamente con el comando Insert Database Query.

Por ejemplo, usemos la "Población total", almacenada en la base de datos, como valor de entrada para el parámetro populacaoTotal. En este caso necesitas:

  • Seleccione el campo donde se rellenará el valor (en el caso Default value, en las propiedades del parámetro);

  • Haga clic en el icono Insert Database Query (tenga en cuenta que solo se activa cuando ingresa al campo Default value);

  • Seleccione la tabla con los datos en Table;

  • Cree una condición de búsqueda (observe cómo AnyLogic ayuda al proceso al abrir opciones automáticamente).

Si conoces el lenguaje SQL, la diversión puede ser aún mayor, porque el campo de Default value (y cualquier campo que acepte algún valor de la base de datos) acepta comandos SQL directamente. Observe la última opción en la ventana Insert Database Query:

Conectar directamente a la hoja de Excel como un objeto dentro del modelo

En este caso, debe traer Excel al modelo, a través de la paleta Connectivity:

  • Arrastra el bloque Excel File para el modelo;

  • Seleccione la hoja de trabajo deseada en la ventana Properties.

Para importar/exportar valores entre la hoja de trabajo y el modelo, hay muchas funciones, pero las principales son:

  • getCellNumericValue(String sheetName, int rowIndex, int columnIndex): sheetName es el nombre de la hoja (por ejemplo, "Inputs"), mientras que rowIndex y columnIndex son los índices de fila/columna de la celda contado desde uno;

  • getCellDateValue(String sheetName, int rowIndex, int columnIndex): igual que arriba, pero para una fecha;

  • setCellValue(value, String sheetName, int rowIndex, int columnIndex): Exporta un valor a Excel. Por ejemplo: excelFile.setCellValue(2.0, "Salidas", 10, 2); exporta el valor 2.0 a la celda de la fila 10 y la columna 2 de la hoja de trabajo "Salidas";;

  • writeDataSet(DataSet dataset, String sheetName, int rowIndex, int columnIndex):igual que arriba, pero para un dataset completo.

Por ejemplo si desea importar el valor del número de meses, está en la carpeta Entradas, en la fila 4 y columna B. El comando sería:

excelFile.getCellNumericValue("Inputs", 4, 2)

Si eres excelmaníaco, el comando anterior también acepta el formato:

excelFile.getCellNumericValue(“Inputs!B4”)

Todos los comandos posibles con hojas de cálculo están bien documentados en el Help y hay un modelo de ejemplo absolutamente completo en AnyLogic (busque “Reading and Writing Excel Files” no menú suspenso Help, opción "Example Models") o tu puedes ejecutar en la nube aquí.

Atualizado

Isto foi útil?