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.
8 comentários:
Foi muito util.
Muito bom.. Parabens.
muito bom
mas queria saber se tem como
eu gerar as informações e valores e ja colocar um grafico qualquer na geracao da planilha automaticamente
Grato
seria muito interessante exportar um relatorio em excel com o grafico mais nao sei como fazer uso gxchart que tambem pode fazer isso tanto via win com web
Para sistemas com 64 bits, utilizar o ExcelLite ao invés do JakartaPOI, que não funciona corretamente apresentando uma mensagem de erro.
Baixar o ExcelLite (GemBox) do link http://www.gemboxsoftware.com/spreadsheet/free-version, e após a instalação, copiar a DLL GemBox.Spreadsheet.dll, localizada em C:\Program Files (x86)\GemBox Software\GemBox.Spreadsheet Free 3.3\Bin\NET20, na pasta BIN da aplicação web.
Para saber mais a respeito deste problema: http://www2.gxtechnical.com/main21/hscver01d.aspx?E%3B15%3B4%3B61%3B2%3B1%3BO%3B,2,19780
Estou utilizando a dll do GemBox, porém a versão free escreve uma aba na planilha que eu estou lendo, há uma forma de desabilitar esta escrita com código nativo c# dentro do genexus, mas ainda não sei como fazer, alguem sabe como ou já fez isso?
Como gerar um relatório que contenha varias plans em apenas um documento de Excel, onde cada plan traga informações diferentes????
Estou com o seguinte problema, estou gerando um relatório com imagem para documento word.
O problema é que a imagem não é incorporada no documento e sim fica uma referencia do caminho onde a imagem está no servidor.
Pois bem, como é documento word o usuário irá salvar localmente este arquivo e ao abrir novamente este arquivo as imagens não são localizadas pois como estavam somente com as referencias não as localiza mais.
amigo e se eu tiver a necessidade de colocar uma imagem?
Postar um comentário