Página 1 de 1
Converter CSV para DBF
Enviado: 03 Jun 2014 08:25
por JSystem
Pessoal,
Alguém tem informação de algo que converta arquivo CSV para DBF ?
De preferência via linha de comando ou alguma rotina desenvolvida em clipper.
É para converter a tabela do IBPT baixada no site DE OLHO NO IMPOSTO (
http://deolhonoimposto.ibpt.org.br/)
Grato.
Converter CSV para DBF
Enviado: 03 Jun 2014 11:16
por billy1943
O arquivo formato CSV (Comma Separared Values) é mais facilmente convertido para o EXCEL.
Para converter para DBF você teria de criar um banco com os campos necessários e uma rotina que separaria cada elemento entre as vírgulas, para esses campos.
Logicamente você vai ter de usar as funções de baixo nível do Clipper no tratamento de arquivos texto, tais
como FOPEN, FREAD, FREADSTR, FCLOSE, além da AT que indicaria as posições das vírgulas separadoras dos conteúdos a serem gravados no DBF.
Converter CSV para DBF
Enviado: 03 Jun 2014 15:53
por rubens
Caro Jsystem....
Não me lembro agora como fiz... mas vou enviar o arquivo DBF do IBPT, talvez server até você conseguir a conversão aí...
Rubens
Converter CSV para DBF
Enviado: 04 Jun 2014 09:36
por Jairo Maia
Olá JSystem,
Abaixo a rotina para importar a tabela .CSV do IBPT. Uso com Harbour, mas não vejo nenhuma incompatibilidade com Clipper:
Código: Selecionar todos
Local cArquivoCSV := "IBPTax.CSV" // coloque aqui o seu arquivo .CSV
Local cArquivoDBF := "IBPTax.DBF" // coloque aqui o seu arquivo .DBF
Local nPointer := 0
Local nEol, cConteudo, cLinha
Local nRegistro, cBuffer, nLenArq, nLido
Local cEol := Chr( 13 ) + Chr( 10 )
Local nHandle := FOpen( cArquivoCSV, 2 )
Local aEstr := {;
{"codigo" ,"C", 8, 0},;
{"ex" ,"N", 3, 0},;
{"tabela" ,"N", 1, 0},;
{"descricao" ,"C", 255, 0},;
{"aliqnac" ,"N", 5, 2},;
{"aliqimp" ,"N", 5, 2};
}
Private cCampo
DBCreate( cArquivoDBF, aEstr )
Use ( cArquivoDBF ) Shared New
nRegistro := 0
cBuffer := Space( 1200 ) // se houver linha maior aumente o 1200
nLenArq := FSeek( nHandle, nPointer, 2 ) // pega tamanho arquivo
FSeek( nHandle, nPointer, 0 ) // posiciona o pointer noinicio
nLido := FRead( nHandle , @cBuffer, 1200 )
nEol := AT( cEol, cBuffer )
nPointer += nEol + 1 // vamos ignorar a linha de nomes de campo
FSeek( nHandle, nPointer, 0 ) // posiciona o pointer na segunda linha
Clear Screen
While nEol > 0
nLido := FRead( nHandle , @cBuffer, 1200 )
nEol := AT( cEol, cBuffer )
If nEol > 0
cLinha := Left( cBuffer, nEol - 1 )
Append Blank // cria o registro vazio no dbf
@ 10, 25 Say "Salvando Registro => " + Str( ++nRegistro )
For x=1 To FCount()
cConteudo:=SubSt( cLinha, 0, At( ";", cLinha ) )
cLinha:= StrTran( cLinha, cConteudo, Nil, 1, 1 ) // remove apenas esta sequencia
cConteudo:=Left( cConteudo, Len( cConteudo ) - 1 ) // tira o ";" do final
cCampo := Field( x )
If ValType( &cCampo. ) = "N"
cConteudo := Val( cConteudo )
EndIf
Replace &cCampo. With cConteudo // salva o campo
Next
EndIf
nPointer += nEol + 1 // incrementa o pointer
If nPointer >= nLenArq // se fim de arquivo,
Exit // fim...
Else // se nao,
FSeek( nHandle, nPointer, 0 ) // posiciona o pointer
EndIf
EndDo
Return Nil
Converter CSV para DBF
Enviado: 05 Jun 2014 23:10
por lucimauro
Jairo;
Sua rotima ficou perfeita, rodei aqui e converteu tudo certinho.!
Obrigado.
Converter CSV para DBF
Enviado: 23 Jun 2015 18:37
por marcos.gurupi
Caro Jairo, preciso ler um arquivo CSV e gravar em um DBF mas o arquivo CSV tem mais campos do que o DBF. O exemplo q tem aqui o CSV eh identico ao DBF. Como faria para converter o CVS lendo apenas os campos q desejo ?
O CSV:
Código: Selecionar todos
PlanilhaID; Usuario; Cartorio; DataLivroDiario; Dia; Mes; Ano; Competencia; QTD; Conta; Referencia; De_Para_Referencia; Ato_Historico; Receita; Despesa; Despesas_Dedutiveis; Despesas_nao_Dedutiveis; Total_de_Receitas; Total_de_Despesas; Resultado
O DBF:
Código: Selecionar todos
CODIGO = ID
TIPO = CONSTANTE "ENTRADA"
DATALAN = DataLivroDiario
NCONTA = Uma combinacao de Conta+Referencia
CADHIST = Conta
HISTORICO = De_Para_Referencia
VALOR = Receita
Converter CSV para DBF
Enviado: 23 Set 2015 15:02
por Josexx
Marcos, o modo mais simples seria criar um DBF temporário contendo todos os campos. Posteriormente executar um APPEND no seu arquivo principal.
Ze
Converter CSV para DBF
Enviado: 23 Set 2015 16:32
por Jairo Maia
Olá Josexx,
Seja Bem vindo ao fórum.
Olá Marcos,
Estive afastado do fórum (e das atividades) por alguns meses, e não vi sua mensagem. Pelo tempo de postagem creio que foi resolvido ou o interesse expirou. Mas usando o exemplo que você se referiu com algumas (pequenas) alterações seria perfeitamente possível, uma vez que a posição dos campos de interesse é conhecida no arquivo CSV.
Não foi desinteresse... espero que entenda.
Converter CSV para DBF
Enviado: 23 Set 2015 17:23
por marcos.gurupi
Caro Jairo, entendo perfeitamente e tenho certeza que para vc ficar afastado do forum o motivo era importante. Consegui aqui usando gambiaras. Mas obrigado por responder.
Converter CSV para DBF
Enviado: 26 Set 2015 12:59
por rochinha
Amiguinhos,
Eu ainda não esqueci de tudo mas lembro do velho comando APPEND FROM ... DELIMITED ";"