Unlock a world of possibilities! Login now and discover the exclusive benefits awaiting you.
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
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
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
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)');