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

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:

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

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.

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

O uso dos dados da tabela pode ser feito diretamente pelo comando Insert Database Query.

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

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!

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.

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