Continuando a série sobre manipulação de dados, vamos ao exemplo de exportação de dados para um arquivo excel, muito comum quando falamos em transações, seja bancária, de cliente, contas a receber e a pagar.
Exportação de dados é uma das grandes qualidades da ferramenta, pois há como trabalhar com estes à maneira que desejarmos, seja para quaisquer situação. Facilitador de muita vida, quando integrado à uma tarefa de importação também.
O exemplo será com base em exportação de dados de cliente. O funcionário seleciona o local onde o arquivo será salvo e, ao clicar em OK, um arquivo excel é gerado. O interessante é que na exportação, o cabeçalho contém o nome dos campos da tabela do mesmo.
Ao abrir o AX, acesse a Árvore de Objetos do Aplicativo(AOT), clique no menu “Job” com o botão direito do mouse e clique na opção “Novo Job”. Em seguida, o editor será aberto e você poderá começar a criar o código.
*O objetivo desse exemplo é exibir os objetos necessários e básicos para o funcionamento do job. O código avançado segue anexo no post.Em seguida, declare as variáveis básicas da aplicação:
//Criando um dicionário com informações da tabela de clientes SysDictTable dictTable; //Dicionário que contém informações sobre os campos de uma tabela SysDictField dictField; //Dicionário que contém informações sobre o tipo do campo SysDictType dictType; //Variáveis auxiliares int i, j, rowCount, colCount, rowTotal; //Valor do campo selecionado anytype fieldValue; //Tipo do campo selecionado Types dataType; //Identificação do número de tabela TableId tableId = tablenum(CustTable); //Dados temporários para montar os registros da tabela //e seus campos Common _buffer, common; //Classe que instancia a aplicação do Excel SysExcelApplication excelApp; //Classe que trabalha os documentos criados no Excel SysExcelWorkBooks excelWorkBooks; //Classe de referência à um documento aberto no Excel SysExcelWorkBook excelWorkBook; //Classe que possui uma collection de abas do workbook trabalhado SysExcelWorkSheets excelWorkSheets; //Classe que possui a instância de uma aba do workbook trabalhado SysExcelWorkSheet excelWorkSheet; //Classe que possui a lista de células da aba ativa SysExcelCells excelCells; //Classe que possui uma célula selecionada SysExcelCell excelCell; //Objetos para filtrar a coluna e definir seu tipo COM excelRange; COM excelFont; COM rangeStart,rangeEnd;
As variáveis acima constituem as informações básicas e necessárias para a criação da exportação do excel. A variável dictTablecontém a referência da tabela de clientes. Ela constitui a um dicionário de dados da tabela, com informações sobre campos, chaves, relacionamentos, etc.
Com as variáveis declaradas, agora é preciso iniciar o excel, criar o documento de acordo com o caminho especificado, abrir o documento e selecionar uma aba:
//Instanciando a aplicação excelApp = SysExcelApplication::construct(); //Criando e salvando o arquivo excel excelWorkBooks = excelApp.workbooks(); excelWorkBook = excelWorkBooks.add(); excelWorkBook.saveAs(fileSave); //Obtendo a aba criada e as células desta excelWorkSheets = excelWorkBook.worksheets(); excelWorkSheet = excelWorkSheets.itemFromNum(1); excelCells = excelWorkSheet.cells();
Com isso, temos a aplicação Excel instanciada (excelApp), um documento aberto (excelWorkbook) e uma aba selecionada (excelWorkSheet) e as células desta (excelCells).
Para exportação dos dados, o código abaixo faz exatamente o desejado:
excelCells.item([no. da linha],[no. da coluna].value([valor da célula]);
Com isso, o valor que você deseja exportar será colocado de acordo com a linha e coluna escolhida. Uma vez com todos os dados preenchidos, a exportação pode ser finalizada:
//Salvando o excel excelApp.save(); //Fechando o documento excelWorkBooks.close(); //Fechando o excel excelApp.quit();
Ao final do processo, você vai ter um sensacional relatório excel conforme o indicado abaixo:
Abraços!
ax 4.0, desenvolvimento, excel, exportação, SysExcel classes, x++
--