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() )