sábado, 22 de agosto de 2009

Arquivos Excel no Genexus

Genexus possui recursos muito simples e interessantes que implementam um 'que' de aplicação integrada, e que podem ser utilizados em seus projetos sem maiores complicações. Um desses recursos é a geração de arquivos XLS (MS-Excel), e que opera de forma similar ao de geração de DOC´s (MS-Word). Nesta página daremos o caminho das pedras para utilizar esse recurso, com a contribuição, do Eng. Claudio Shinji, autor original do trabalho.

Antes de mais nada é necessário obter e instalar uma biblioteca chamada JAKARTA-POI, através do site http://sourceforge.net/projects/jbyjsharp/files/Jakarta%20POI/, e que originalmente consiste na API 'Java' para manipulação de arquivos no formato OLE2 Microsoft, mas que no projeto do sourceforge foi gentilmente traduzido para .NET e J#. Esse exemplo foi programado no Genexus 9.0, X e Ev RC, e .NET C# sem maiores complicações, se seu ambiente não for esse, favor providenciar as bibliotecas adequadas.

OLE2 Microsoft é um formato OpenXML, que na prática permite a leitura e escrita de arquivos MS Word, MS PowerPoint e MS Excel. A instalação deve ser feita dentro da pasta BIN que se encontra na pasta WEB do modelo criado no Genexus, entendendo-se 'instalação' apenas a cópia das DLL´s para esse local.

Para evitar maiores confusões também instale o Microsoft J#, que pode ser obtido em http://www.microsoft.com/downloads/details.aspx?familyid=F72C74B3-ED0E-4AF8-AE63-2F0E42501BE1&displaylang=enhttp://www.microsoft.com/downloads/details.aspx?familyid=F72C74B3-ED0E-4AF8-AE63-2F0E42501BE1&displaylang=en

A planilha será criada em um local abaixo do diretório ROOT da aplicação, ou seja, em nosso caso, abaixo da pasta WEB. Voce pode inclusive criar uma pasta chamada EXCEL para guardar esses arquivos organizadamente. O acesso ao arquivo gerado deve ser feito pela web por meio de uma URL que aponte para esse arquivo nessa tal pasta EXCEL. Desta forma são necessárias duas informações: local fisico de armazenamento (C:\Inetpub\wwwroot\AplicacaoGenexus\ Excel\planilha.xls) e a URL que aponta para o arquivo (http://www.algumlugar.com.br/%20aplicacaogenexus/excel/planilha.xls)

Programação da Coisa

Passada a fase dos ajustes no servidor, agora voce deve programar (enfim!), e não muita coisa é necessária para se produzir a planilha.

Declaração de variáveis, apenas uma Planilha do tipo ExcelDocument, uma linha do tipo Numeric e uma Arquivo do tipo Character(30).

A programação é simples, bastando seguir os passos apresentados a seguir.

Event 'excel'
&Planilha.UseAutomation = 0
&Arquivo = 'C:\inetpub\wwwroot\Aplicacao\excel\planilha.xls'
&Planilha.Open(&Arquivo)

if &Planilha.ErrCode <> 0
msg(&Planilha.ErrDescription)
else
&Planilha.Clear()

&Planilha.Cells(1,1).Text = 'Id'
&Planilha.Cells(1,1).Italic = 1
&Planilha.Cells(1,1).Bold = 1

&Planilha.Cells(1,2).Text = 'Nome'
&Planilha.Cells(1,2).Italic = 1
&Planilha.Cells(1,2).Bold = 1
&linha = 2

For each line in Grid1
&Planilha.Cells(&linha,1).text = CidadeId.ToString()
&Planilha.Cells(&linha,1).Color = 3
&Planilha.Cells(&linha,2).Text = CidadeNome.ToString()
&Planilha.Cells(&linha,2).Color = 3
&linha = &linha + 1
endfor

&Planilha.Save()
TextBlock1.Caption = "planilha"

endif

EndEvent

Em vermelho voce encontra um controle TextBlock (HTML format) que deve apontar para a URL onde foi gravada a planilha. Em azul o local fisico onde o arquivo da planilha deve ser criada.


O exemplo abre um GRID em um WebPanel apresentando uma tabela de Cidades, e em seguida através de um botão, o evento 'Excel' é chamado e a planilha criada com os registros apresentados no GRID. Observe que o tratamento da planilha é realizado por meio de suas células, e a programação apenas preenche essas células com informação.
E o resultado é uma planilha que pode ser visualizada clicando-se no link 'planilha'.
Bom trabalho!