Página 1 de 1

Importar arquivo *.txt

Enviado: 20 Jan 2010 16:38
por ctavares
Olá, boa tarde.
Estou precisando importar um arquivo txt que tem o layout que pode ser visto logo abaixo, preciso que o cliper entenda que cada campo está separado por ; é possível fazer isso? Eu já encontrei exemplos de código que mostra como importar por numero de coluna fixo mas não separado por ; como é o caso do meu *.txt

arquivo.txt
codigo/bruto/liquido/venda
1/901-13;4.41;3.31;8.27
1/901-16;4.41;3.31;8.27
1/908-01;4.48;3.36;8.40
1/918-22;4.98;3.74;9.34
1/918-24;4.98;3.74;9.34
1/918-25;4.98;3.74;9.34
1/918-36;4.98;3.74;9.34
1/918-38;4.98;3.74;9.34
1/919-01;5.55;4.16;10.41

Muito Obrigado.

Re: Importar arquivo *.txt

Enviado: 20 Jan 2010 17:02
por Toledo

Re: Importar arquivo *.txt

Enviado: 01 Fev 2010 16:19
por leandromiler
Segue rotina que usei para importar um arquivo parecido com este.

Código: Selecionar todos


 clear
 USE CIDADE ALIAS CIDADE NEW
 ZAP

 USE importa ALIAS importa NEW
 GO TOP
 CONTA=0
DO WHILE .T.
   CLEAR
   do while !EOF()
      mLINHA:=importa->LINHA

      mCEP=' '
      mCEP=SUBSTR(mLINHA,1,8)

      mCIDADE=' '
      X=10
      DO WHILE SUBSTR(mLINHA,X,1)<>';'   // CEP
          IF x=10
            mCIDADE=SUBSTR(mLINHA,X,1)
          ELSE
            mCIDADE=mCIDADE+SUBSTR(mLINHA,X,1)
          ENDIF
          X++
      ENDDO

      mUF=' '
      X++ // PULA PONTO E VIRGULA
      mUF=SUBSTR(mLINHA,X,2)
      X:=X+2


      mBAIRRO=' '
      X++ // PULA PONTO E VIRGULA
      DO WHILE SUBSTR(mLINHA,X,1)<>';'   // CEP
          IF EMPTY(mBAIRRO)
            mBAIRRO=SUBSTR(mLINHA,X,1)
          ELSE
            mBAIRRO=mBAIRRO+SUBSTR(mLINHA,X,1)
          ENDIF
          X++
      ENDDO

      mENDE=' '
      X++ // PULA PONTO E VIRGULA
      DO WHILE SUBSTR(mLINHA,X,1)<>';'   // CEP
          IF EMPTY(mENDE)
            mENDE=SUBSTR(mLINHA,X,1)
          ELSE
            mENDE=mENDE+SUBSTR(mLINHA,X,1)
          ENDIF
          X++
      ENDDO


      CONTA++
      @ 05,60 SAY CONTA PICT '9999999'

      SELE CIDADE
      APPE BLANK
      REPLACE CEP       WITH mCEP
      REPLACE CIDADE    WITH UPPER(mCIDADE)
      REPLACE UF        WITH UPPER(mUF)
      REPLACE BAIRRO    WITH UPPER(mBAIRRO)
      REPLACE ENDERECO  WITH UPPER(mENDE)

//      @ 22,20 say mCEP
//      @ 23,20 say mENDE
//      @ 24,20 say mCIDADE+' '+MUF

      SELE importa
      SKIP
      IF EOF()
        EXIT
      ENDIF
   ENDDO
   IF EOF()
     EXIT
   ENDIF
 ENDDO


Re: Importar arquivo *.txt

Enviado: 01 Fev 2010 17:29
por alxsts
Olá!

Seja bem-vindo ao fórum!

Você precisará criar a tabela .DBF onde os dados serão armazenados e depois popular com os dados do arquivo texto .

Exemplo:

Código: Selecionar todos

   // cria tabela vazia conforme layout apresentado
   DbCreate( "Arquivo",  ;
                   { { "codigo",  "C", 8, 0 }, ;
                     { "bruto",   "N", 8, 2 }, ;
                     { "liquido", "N", 8, 2 }, ;
                     { "venda",   "N", 8, 2 }  ;
                   };
                )

   // abre tabela vazia criada acima (Arquivo.DBF)
   USE "Arquivo" EXCLUSIVE NEW

   IF ! NetErr()
     // se abriu a tabela vazia, importa os dados (Arquivo.TXT)
     APPEND FROM "Arquivo.TXT" DELIMITED WITH ";"
   Else
     Alert( "Falha na abertura do arquivo destino.;" + "Erro DOS " + LTrim( Str( FError() ) )
   Endif

   // Fecha tabela
   Arquivo->( DbCloseArea() )