X for Dummies

X++ e exportação em Excel

Publicado em AX40, X++, 20/03/2009, por Edvandro Santos

0


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.

Criando o job

Criando novo job

Criando novo job

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.

Iniciar a aplicação

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

A exportação dos dados

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:

Resultado da exportação em excel

Download dos arquivos do postDownload dos arquivos do post

Abraços!


Posts relacionados


    Fatal error: Call to undefined function wp_related_posts() in /home/ax4dummies/axfordummies.com/wp-content/themes/axfordummies/single.php on line 33