# 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.

## **I**mportació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.&#x20;

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

![](https://lh3.googleusercontent.com/VFoqMjpnQhdKBSNkRhwG5vn2ISpTKc2iyIH2rZDyih3CBT_i9zWyXk3JOHYi8J3dNIBmUINHMbVIk-saIUCAVU1iTXvGp7RAv2WmEGjYUUl-2TROwOYZgw_hd3DRi_XucINYGvFj)

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**.

![](https://lh6.googleusercontent.com/aSyU-frig7breFNh1Sr5ugQMmInkOXZNFVY7uB3NqKCWTU0JrIY2bb9eY31mdokMaLiN0k9UPCzDpr-kJiHkRzpxGEosu4qeEwxMF1nno0eFAShUZSR4YDqzfzoRR3GQPSTJOTp8)

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:

![](https://lh6.googleusercontent.com/AyLN_LMjyel4OMyQLiUJ6MExnDg2NrGpcgLEidxRVnaTt90jpaGyKPZHqcUalUzpfwuq7-ngYjYRXSggM_NtfwJpKH-zZRSdFc3dAOXCtQV2gWRDU2l-9TGQJO3oGf-9xfSXQn8u)

El uso de los datos de la tabla se puede hacer directamente con el comando **Insert Database Query**.&#x20;

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).

![](https://lh3.googleusercontent.com/OhB7pgVGpUsyQYkSJJMkBgGR6ERXl1TvyzfByQufd8sRDwWML5lrf9ZaAb4aKwMlJOd2aMPMSyef5pa4_-ULsIcZczgyaT4Xx3SRVuVbqIkui8_iIGD9q-P3ItnB4AzXpdtxU6Ju)

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:**

![](https://lh6.googleusercontent.com/KGmo5wqMGqPxImJvO9KNE6IvthnXSYhWXsazRggmlyJL_GCXgOjVGoQ0YKCFoI7iaM_s5ZXIg4TenE6r9ksqhYcH5LqDPkxoRB_D4BAAel-kIZ2ie3Hb-RAWdP1ls-lI-vHlWMNN=s0)

## 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**.

![](https://lh6.googleusercontent.com/GRerymSmE8Nug-BS1-nJxYd5gakRpnVMMY4N3ySuQ5UPda_oa-jaATgfpnQfacTtBzseXXDm1W1ts9DS-tuPeeUdHPzQElwauqIp3P-cI9OFxJ8lcRyBZiDercIVJsAc-Hy8dckh)

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](https://help.anylogic.com/index.jsp?topic=%2Fcom.anylogic.help%2Fhtml%2Fconnectivity%2Fexcel-file.html) 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í](https://cloud.anylogic.com/model/99d9f196-17e7-47c3-9b28-63a6f23b0dad?mode=SETTINGS).


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://tutorial-ds.anylogicbrasil.com.br/espanol/comunicacao-com-planilhas-excel.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
