# Comunicação com planilhas Excel

Para conexão com o **Excel** (entrada ou saída de dados), o AnyLogic fornece diversas alternativas. Basicamente, há duas opções indicadas para iniciantes:

* Importar os dados da planilha Excel para o banco de dados do AnyLogic;
* ou conectar diretamente a planilha Excel como um objeto dentro do AnyLogic.

## **Importando os dados do Excel para o banco de dados do AnyLogic**

&#x20;Neste caso, os dados da sua planilha do Excel devem estar com uma “cara tabular”, pois, no AnyLogic, cada pasta do Excel será importada para uma tabela do Banco de Dados e \[importante!] a **primeira linha** da pasta será utilizada como título das colunas da tabela. Por exemplo, considere a seguinte planilha Excel:

![](https://lh5.googleusercontent.com/ou2jhBLf_s-JZ5-CNgUHzfmE97n4RDVBrdcm6IeNbo8b1Y-I_tTBZJNGFKXnJjvAaSH_wPazkS2_fDTSYnsEMNmnPB6nBRYybrhrxG0Fs3jLtTa3qtETfED-BbsPHVE-TADmKchZ)

(Note que a primeira linha está preenchida com os cabeçalhos da tabela. Se não fosse assim, haveria erro na leitura do arquivo.)&#x20;

Para importar a planilha para o banco de dados, siga os passos:

* Clique com o 2° botão do mouse em cima do ícone **Database**, na aba de projetos e selecione a opção: **Import database tables**;
* Localize o seu arquivo Excel (ou tabela de banco de dados);
* Selecione, se for o caso, as pastas que queira importar e aperte o botão **OK**.

![](https://lh6.googleusercontent.com/O97etWhrnEzDheiKNGCP_ENpdbMnNY2cvMcwBQ19lmiihL0tnHW_WoadY3MRElCz2lYVaFbsq8NOnDeYM81H-EUzz-HaUNO1ALwVe4Smh8SGLUKnuxUrvU5Z2lV6bioMgsApEJ3W)

No exemplo, a planilha foi importada como uma tabela e, com dois cliques no seu ícone, você pode visualizar os dados armazenados:

![](https://lh3.googleusercontent.com/8bLBYZr5n2qlza00cMTiOg9qbNcLpY4f6BDpLGyiImqJmoMCtCuLyodDVxESUpCUCLzYkkz84AoXB_ALJpqFhHeVPXq669ToOo5u2zPaPpL2xngTIRDEyudsBeDFpYSN9pavz3ru)

O uso dos dados da tabela pode ser feito diretamente pelo comando **Insert Database Query**.&#x20;

Por exemplo, vamos utilizar a “Taxa de chegadas de clientes”, armazenada no banco de dados, como valor de entrada para o parâmetro **Arrival rate** do bloco **chegadas**. Neste caso, você precisa:

* Selecionar o campo onde o valor será preenchido (no caso **Arrival rate**, do bloco chegadas);
* Clicar no ícone do  **Insert Database Query** (note que ele só fica ativo quando você entra no campo **Arrival rate**);
* Selecionar a tabela com os dados em **Table**;
* Criar uma condição de pesquisa (note como o AnyLogic auxilia o processo, abrindo automaticamente as opções).

![](https://lh5.googleusercontent.com/TF4M9c0HzofaUeceEdunzK7-UQq5P3DNT-rVWb4bw6-9hP7lM5NWyuPOhDsv9oCAmFbrs3Z_EPJ0eyi_lrhB--Hv0ODRMK9JnmRXoDeDwMfI4fOuMjPlXQ-xjrBN2Uy4MVUoU0c0)

Você precisa importar uma programação de chegadas que muda sua taxa em intervalos ao longo do dia? O AnyLogic [tem uma maneira bem bacana de fazer isso!](https://help.anylogic.com/topic/com.anylogic.help/html/data/schedule.html?resultof=%22%73%63%68%65%64%75%6c%65%22%20%22%73%63%68%65%64%75%6c%22%20)

## **Conectar diretamente a planilha do Excel como um objeto dentro do modelo**

Neste caso, você deve trazer o Excel para dentro do modelo, por meio da paleta **Connectivity**:

* Arraste o bloco **Excel File** para o modelo;
* Selecione a planilha desejada na janela **Properties**.

![](https://lh5.googleusercontent.com/gkf8SKDVpCKMFFk8MBrL_jCL0zQR2PVYnoBGpaNjjX_488mSV2BF04AAK0uMqHmQIJpC0mpfglYox6tsC4-w47y7V9mywIuIX_gfQUHxiq3GGJSraGky286564w5yyYGoE3OXzxq)

Para importar/exportar valores entre a planilha e o modelo, são muitas funções, mas as principais são:

* **`getCellNumericValue(String sheetName, int rowIndex, int columnIndex):`**`sheetName` é o nome da planilha (por exemplo: “Inputs”), enquanto `rowIndex` e `columnIndex` são os índices linha/coluna da célula **contados a partir de um**;
* **`getCellDateValue`**`(String sheetName, int rowIndex, int columnIndex):` idem ao anterior, mas para uma data;
* **`setCellValue`**`(value, String sheetName, int rowIndex, int columnIndex):` exporta um valor para o Excel. Por exemplo: **`excelFile.setCellValue(2.0, "Outputs", 10, 2);`**  exporta o valor 2.0 para a célula da linha 10 e da coluna 2 da pasta “Outputs”;
* **`writeDataSet`**`(DataSet dataset, String sheetName, int rowIndex, int columnIndex)`: idem ao anterior, mas para um **Dataset** completo.

Todos os comandos possíveis com planilhas estão bem documentados no [Help do AnyLogic](https://help.anylogic.com/topic/com.anylogic.help/html/connectivity/excel-file.html?resultof=%22%65%78%63%65%6c%22%20%22%66%69%6c%65%22%20) e existe um modelo exemplo absolutamente completo no AnyLogic (procure por “**Reading and Writing Excel Files**” no menu suspenso **Help**, opção **Example Models**) ou você pode [executar sua versão na nuvem aqui](https://cloud.anylogic.com/model/99d9f196-17e7-47c3-9b28-63a6f23b0dad?mode=SETTINGS).
