2 Replies Latest reply: Aug 4, 2014 10:34 PM by Yuri Nicolett RSS

    Importar Arquivos Excel de Pastas e Subpastas

    Michael Ataides de Melo

      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. michaelataides

        • Re: Importar Arquivos Excel de Pastas e Subpastas
          Felipe Dutra

          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
            Yuri Nicolett

            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)');