Qlik Community

Qlik Brasil

Group community for Brazil users. discussion only in Portuguese.

Highlighted
michaelataides
New Contributor III

Importar Arquivos Excel de Pastas e Subpastas

Boa Noite Pessoal,

Preciso importar arquivos de Excel que serão gerados diariamente separados por pastas e subpastas.

Alguém pode me ajudar ou dar a dica de onde devo ir para obter a informação.

At. Michael Ataides

Tags (1)
1 Solution

Accepted Solutions
felipe_dutra
Contributor

Re: Importar Arquivos Excel de Pastas e Subpastas

Veja este exemplo, Michael:

SET vDirBase = 'D:\XXX\YYY\';

SET vDadosExtraidos = 'D:\XXX\ZZZ\';

SET vExt = 'xlsx';

SET vPar = '(ooxml, no labels, table is Plan1)';

For Each vDir in DirList (vDirBase&'*')

  FOR Each vArquivo in FileList (vDir&'\*.'&vExt)

  LET vNomeArquivo = SubField(SubField(vArquivo, '\', -1), '.'&vExt, 1);

  [$(vNomeArquivo)]:

  LOAD *

  From

  [$(vArquivo)]

  $(vPar);

  STORE [$(vNomeArquivo)] into [$(vDadosExtraidos)$(vNomeArquivo).QVD](QVD);

  DROP Table [$(vNomeArquivo)];

  NEXT vArquivo

NEXT vDir

Abs,

Felipe

2 Replies
felipe_dutra
Contributor

Re: Importar Arquivos Excel de Pastas e Subpastas

Veja este exemplo, Michael:

SET vDirBase = 'D:\XXX\YYY\';

SET vDadosExtraidos = 'D:\XXX\ZZZ\';

SET vExt = 'xlsx';

SET vPar = '(ooxml, no labels, table is Plan1)';

For Each vDir in DirList (vDirBase&'*')

  FOR Each vArquivo in FileList (vDir&'\*.'&vExt)

  LET vNomeArquivo = SubField(SubField(vArquivo, '\', -1), '.'&vExt, 1);

  [$(vNomeArquivo)]:

  LOAD *

  From

  [$(vArquivo)]

  $(vPar);

  STORE [$(vNomeArquivo)] into [$(vDadosExtraidos)$(vNomeArquivo).QVD](QVD);

  DROP Table [$(vNomeArquivo)];

  NEXT vArquivo

NEXT vDir

Abs,

Felipe

Re: Importar Arquivos Excel de Pastas e Subpastas

Michael, você pode usar uma função que varre toda uma árvore de diretórios atrás de arquivos .xls ou .xlsx

segue abaixo um exemplo de código:

//Caminho de árvore de diretórios que contém os arquivos a serem lidos

SET vPath = 'C:\Users\Yuri\Projetos';

/*

  Procurando por arquivos para execução manual.

*/

sub QVWDir(Root)

  FOR each vExt in 'xls'

  FOR each vFoundFile in filelist( '$(Root)' & '\*.'& '$(vExt)' )

  Trace >> Arquivo Encontrado: $(vFoundFile);

  LogManual_Atual:

  LOAD

  [@1:n] as NomeArquivoCompleto,

  SubField([@1:n], '\', -1) as NomeArquivo,

  Date(Now(), 'DD/MM/YYYY hh:mm:ss') as DataHoraGeracao

  INLINE '$(vFoundFile)' (fix, no labels);

  NEXT vFoundFile;

  NEXT vExt;

  FOR each Dir in dirlist( '$(Root)' & '\*' )

  call QVWDir('$(Dir)')

  NEXT Dir;

end sub

Call QVWDir('$(vPath)');