Leitura e Gravação de arquivos Excel

Básico para trabalhar com Excel no Genexus

A seguir vou listar algumas funções básicas para manipulação de arquivos Excel (XLS, XLSX e CSV) .

É necessário criar uma variável e definir ela com o tipo ExcelDocument.

No nosso caso vou criar uma variável de nome Excel.

Criação de variável Tipo ExcelDocument

Para abrir ou criar o arquivo é necessário efetuar o comando : &Excel.Open(“CAMINHO DO ARQUIVO”) ou &Excel.Open(&VarCharNomeDoArquivo)

Para verificar se ocorreu algum erro é necessário acessar sempre os métodos

&Excel.ErrCode
// Se tiver valor = 0 não tem problema, caso tenha valor > 0 ocorreu algum problema


&Excel.ErrDescription
// Caso o ErrCod tenha valor > 0 aqui sairá a descrição do erro

Recomendo sempre colocar em uma Subrotina para poder verificar em qualquer  momento e monitorar caso alguma ação com o Excel dê erro.

Sempre ao final da criação, alteração ou leitura do arquivo feche o arquivo com:
&Excel.Close()
E para trabalhar com abas do Excel temos dois comandos:

Selecionar a Aba :
&Excel.SelectSheet(“NomeDaAba”)


Renomear a Aba corrente para um novo nome:
&Excel.RenameSheet(“NomedaAba”)

Leitura

Irei demonstrar como fazer a leitura de um arquivo XLSX que tem a seguinte estrutura.

&Excel.Open("C:\DAVIDAGOSTINI\ARQUIVOEXCEL.XLSX")
Do 'Verificar_Erro_Excel'
If &Excel_ErrCode > 0 Msg('Ocorreu o seguinte erro ao abrir o arquivo : ' + &Excel_ErrDescription) Return Endif
For &Linha = 1 to 99999
if Not &Excel.Cells(&Linha,1).Value.Trim().Length() > 0 Exit EndIf For &Coluna = 1 to 4 Do Case Case &Coluna = 1 &Codigo = &Excel.Cells(&Linha,&Coluna).Value Case &Coluna = 2 &Nome = &Excel.Cells(&Linha,&Coluna).Value Case &Coluna = 3 &Endereco = &Excel.Cells(&Linha,&Coluna).Value Case &Coluna = 4 &Email = &Excel.Cells(&Linha,&Coluna).Value EndCase EndFor // Aqui Virá o Seu Código para Inclusão na Base de Dados ou alguma outra ação necessária &Codigo.SetEmpty() &Nome.SetEmpty() &Endereco.SetEmpty() &Email.SetEmpty()
EndFor
&Excel.Close()

Sub 'Verificar_Erro_Excel'
If &Excel.ErrCode > 0 // Se tiver valor = 0 não tem problema, caso tenha valor > 0 ocorreu algum problema
&Excel_ErrCode = &Excel.ErrCode &Excel_ErrDescription = &Excel.ErrDescription // Caso o ErrCod tenha valor > 0 aqui sairá a descrição do erro EndIf
EndSub

Note que como tenho uma estrutura definida nas colunas eu posso percorrer apenas as 4 colunas, mas é possível também percorrer todas as colunas utilizando a mesma lógica.

Para verificar na leitura do arquivo quando não tiver conteúdo, eu verifico se na linha que estou posicionado se existe conteúdo na primeira coluna, caso não tenha eu saio do laço de repetição.

Escrita

Irei demonstrar como fazer a gravação de um arquivo XLSX na seguinte estrutura.

&Excel.Open("C:\DAVIDAGOSTINI\ARQUIVOEXCEL.XLSX")
&Linha = 1
&Excel.Cells(&Linha,1).Text = 'Código' &Excel.Cells(&Linha,2).Text = 'Nome' &Excel.Cells(&Linha,3).Text = 'Endereço' &Excel.Cells(&Linha,4).Text = 'Email'
For &Coluna = 1 to 4
&Excel.Cells(&Linha,&Coluna).Bold = True
EndFor
For Each TabelaCliente
&Linha += 1
&Excel.Cells(&Linha,1).Number = ClienteCodigo &Excel.Cells(&Linha,2).Text = ClienteNome &Excel.Cells(&Linha,3).Text = ClienteEndereco &Excel.Cells(&Linha,4).Text = ClienteEmail
EndFor
&Excel.Save()
If &Excel_ErrCode > 0
Msg('Ocorreu o seguinte erro ao salvar o arquivo : ' + &Excel_ErrDescription)
Return
Endif
&Excel.Close()

Sub 'Verificar_Erro_Excel'
if &Excel.ErrCode > 0 // Se tiver valor = 0 não tem problema, caso tenha valor > 0 ocorreu algum problema
&Excel_ErrCode = &Excel.ErrCode &Excel_ErrDescription = &Excel.ErrDescription // Caso o ErrCod tenha valor > 0 aqui sairá a descrição do erro EndIf
EndSub

Está sendo demonstrado como gravar os dados de uma tabela para o Excel.

Estamos deixando a primeira coluna em negrito, com o comando BOLD.

Existem outras propriedades da Cells que podem ser utilizadas para mudar a apresentação da célula.

  • Bold = Negrito
  • Color = Cor da Fonte
  • Date = Pegar ou Setar o conteúdo como Data
  • Font = Nome da Fonte
  • Italic = Italico
  • Number = Pegar ou Setar o conteúdo como valor numérico
  • Size = Tamanho da Fonte
  • Text = Pegar ou Setar o conteúdo como Texto
  • Type = Retorna o tipo de dado da celula
  • Underline = Sublinhado
  • Value= Retorna o valor, caso a celula tenha formula utilize o value, caso pegue como text ele irá trazer a formula e não o valor.

Na minha opinião ainda faltam algumas coisas para melhorar neste tipo de objeto. Segue minha listinha:

* Cor de Fundo
* Deixar campo já como autofiltro
* Mesclar células
* Orientação de texto

221 Views
2018-09-14T10:59:34-03:00 By |Uncategorized|0 Comentários

Sobre o Autor:

Avatar

Deixar Um Comentário