sexta-feira, 16 de maio de 2008

Upload de Arquivos e Leitura de Arquivo Excel na WEB

Olá Pessoal,

Saudações a todos!!!

Neste artigo irei mostrar a vocês como realizar o upload de arquivos por meio do GeneXus, isso é muito útil quando desenvolvemos aplicações para a Web.

De quebra ainda mostrarei como fazer a leitura de uma planilha Excel.

Para realizar o upload não utilizaremos nehum arquivo externo. Essa implementação serve para o gerador .Net da versão GeneXus 9.0. Foi testada e está funcionando. A princípio também funcionará com a versão 8.0 e 7.5 do GeneXus, fazendo uso do gerador .Net também.

Muitos irão perguntar, e para o gerador Java, como farei? Bom, isso ficará para um próximo artigo!!!

A leitura da planilha Excel que iremos ver não irá requerer o Microsoft Excel instalado no servidor. Faremos uso de DLLs de Jakarta POI, elas são distribuídas gratuitamente e podem ser baixadas através do link:


http://sourceforge.net/project/showfiles.php?group_id=151482&package_id=171498

Vamos a implementação. Será necessário criar uma Web Panel e definir as seguintes variáveis:


Clique na imagem para melhor visualização.

O Web Form da Web Panel ficará assim:


Clique na imagem para melhor visualização.

Programaremos os seguintes eventos:
  • Evento Start
  • Evento Enter //está associado ao botão Importar Planilha do Web Form da Web Panel
  • Evento Grid.Load //associado ao Grid do Web Form da Web Panel
Abaixo a codificação de todos os eventos.

Evento Start

Clique na imagem para melhor visualização.

Observe que na linha 8 é onde informamos o caminho onde os arquivos serão armazenados. Devemos informar o path absoluto. Os diretórios Upload e Arquivos foram criados manualmente e o diretório Arquivos deve ter permissão de escrita.

Nas linhas 17 a 20 é onde expandimos o código HTML para o
TextBlock que está no web form e que deve estar configurado com a propriedade Format em HTML. O código HTML é responsável por criar o controle de upload no form.

Evento Enter

Clique na imagem para melhor visualização.

Observe que no Evento Enter é utilizado comandos nativos do Csharp.

Evento Grid.Load

Clique na imagem para melhor visualização.

Neste evento é onde efetuamos a leitura da planilha Excel.
A variável &Planilha é do tipo ExcelDocument. Repare na linha 58, onde informamos que faremos uso das DLLs de Jakarta POI. As DLLs devem constar no diretório Bin do modelo Web.
A planilha lida possui o seguinte layout:


Clique na imagem para melhor visualização.

Espero que todos tenham gostado e que as informações transmitidas seja de grande utilidade em seus futuros projetos. Enviem os seus comentários e sugestões.

Forte abraço a todos e até a próxima!

4 comentários:

Anônimo disse...

Bruno,
Queria agradecer sua gentileza de postar algo tão importante para a comunidade. Confesso que aprendi muitas coisas com seu exemplo.
Testei no Genexus X e rodou certinho, sem nenhum problema.
Grande abraço

Anônimo disse...

Bruno,

Poderia postar um exemplo de upload com o Genexus em Java ?

Obrigado.

Anônimo disse...

Bruno gostei do artigo, mas será que não seria possível utilizar algo nativo do genexus para fazer o upload?

Bruno disse...

Valeu Douglas!

Hoje com as versões mais novas do GeneXus o upload pode ser feito via componente usando algum User Control específico. Consequentemente fazer para Java tbm se torna bem tranquilo.