Comunicação com planilhas Excel
Atualizado
Atualizado
Para conexão com planilhas eletrônicas (tanto para entrada, quanto saída de dados), o AnyLogic fornece diversas alternativas. São duas as opções indicadas para iniciantes:
Importar os dados da planilha para o banco de dados do AnyLogic ou
Conectar diretamente a planilha como um objeto dentro 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 própria do Banco de Dados e [importante!] a primeira linha da planilha será utilizada como título das colunas da tabela. Assim, nao utilize acentuacao ou cedilha na primeira linha da planilha.
Por exemplo, considere a seguinte planilha Excel:
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 “População total”, armazenada no banco de dados, como valor de entrada para o parâmetro populacaoTotal. Neste caso, você precisa:
Selecionar o campo onde o valor será preenchido (no caso Default value, nas propriedades do parâmetro);
Clicar no ícone do Insert Database Query (note que ele só fica ativo quando você entra no campo Default value;
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).
Caso você conheça a linguagem SQL, a diversão pode ser ainda maior, pois o campo de Default value (e qualquer campo que aceitar algum valor do banco de dados) aceita comandos SQL diretamente. Repare, por exemplo, na última opção da janela do Insert Database Query:
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 planilha “Outputs”;
writeDataSet(DataSet dataset, String sheetName, int rowIndex, int columnIndex): idem ao anterior, mas para um dataset completo.
Por exemplo, se você quiser importar o valor do número de meses, ele está na pasta de Inputs, na linha 4 e coluna B. O comando ficaria:
excelFile.getCellNumericValue("Inputs", 4, 2)
Se você for um excelmaníaco, o comando anterior também aceita o formato:
excelFile.getCellNumericValue(“Inputs!B4”)
Todos os comandos possíveis com planilhas estão bem documentados no Help e existe um modelo exemplo absolutamente completo no AnyLogic (procure por “Reading and Writing Excel Files” no menu suspenso Help, opção "Example Models") que você pode executar sua versão na nuvem aqui.