Importando arquivo texto

Blog Advpl - Share knowledge

Importando arquivo texto

No exemplo, mostro de forma simples a importação de um arquivo texto com duas colunas

Exemplo formato do arquivo:

linha1coluna1;linha1coluna2;
linha2coluna1;linha2coluna2;
linha3coluna1;linha3coluna2;
linha4coluna1;linha4coluna2;
linha5coluna1;linha5coluna2;

 

Static Function Importar(cArqImpor)
    Local cLinha := ""  
    Local nLinha := 0
    Local aDados := {}
    Local nTamLinha := 0
    Local nTamArq:= 0

    //Valida arquivo
    If !file(cArqImpor)
        Aviso("Arquivo","Arquivo não selecionado ou invalido.",{"Sair"},1)
        Return
    Else     
        //+---------------------------------------------------------------------+
        //| Abertura do arquivo texto                                           |
        //+---------------------------------------------------------------------+
        nHdl := fOpen(cArqImpor)
    
        If nHdl == -1 
            IF FERROR()== 516 
                ALERT("Feche a planilha que gerou o arquivo.")
            EndIF
        EndIf
        
        //+---------------------------------------------------------------------+
        //| Verifica se foi possível abrir o arquivo                            |
        //+---------------------------------------------------------------------+
        If nHdl == -1
            cMsg := "O arquivo de nome "+cArqImpor+" nao pode ser aberto! Verifique os parametros."
            MsgAlert(cMsg,"Atencao!")
            Return
        Endif
        
        //+---------------------------------------------------------------------+
        //| Posiciona no Inicio do Arquivo                                      |
        //+---------------------------------------------------------------------+
        FSEEK(nHdl,0,0)
        
        //+---------------------------------------------------------------------+
        //| Traz o Tamanho do Arquivo TXT                                       |
        //+---------------------------------------------------------------------+
        nTamArq:=FSEEK(nHdl,0,2)
        
        //+---------------------------------------------------------------------+
        //| Posicona novamemte no Inicio                                        |
        //+---------------------------------------------------------------------+
        FSEEK(nHdl,0,0)
        
        //+---------------------------------------------------------------------+
        //| Fecha o Arquivo                                                     |
        //+---------------------------------------------------------------------+
        fClose(nHdl)
        FT_FUse(cArqImpor)  //abre o arquivo 
        FT_FGOTOP()         //posiciona na primeira linha do arquivo      
        nTamLinha := Len(FT_FREADLN()) //Ve o tamanho da linha
        FT_FGOTOP()
        
        //+---------------------------------------------------------------------+
        //| Verifica quantas linhas tem o arquivo                               |
        //+---------------------------------------------------------------------+
        nLinhas := nTamArq/nTamLinha
        
        ProcRegua(nLinhas)
    
        aDados:={}  
        While !FT_FEOF() //Ler todo o arquivo enquanto não for o final dele
           
            IncProc('Importando Linha: ' + Alltrim(Str(nCont)) )
          
            clinha := FT_FREADLN() 
    
            aadd(aDados,Separa(cLinha,";",.T.))

            FT_FSKIP()
        EndDo

        FT_FUse()
        fClose(nHdl)
    EndIf
    
    ProcRegua(len(aDados))
    
    For i := 1 to len(aDados)
        //Considerando que no arquivo txt contenha 2 colunas, mostre na tela linha a linha
        alert(aDados[i,1] + " " + aDados[i,2])
        Next

    Aviso("Atenção","Importação com exito!",{"Ok"},1)

Return

 

 

3 comentários

  1. Alexandre disse:

    oi, muito interessante esta função, agora você teria algum exemplo para importar direto no Orçamento? obrigado

  2. […] antes veja o artigo Importando arquivo texto, agora que já está familiarizado, vamos no que […]

Português Português Español Español English English