Importando Arquivos CSV (Texto Delimitado)

Neste artigo veremos como importar arquivos de texto delimitado como CSV e outros.

A procedure abaixo listada permite ler qualquer arquivo de texto delimitado, quer seja por virgula, ponto e vírgula ou qualquer outro delimitador. Para tanto basta informar corretamente o delimitador na função aninhada MontaValor.

No exemplo abaixo as informações contidas no arquivo texto serão gravadas em dois ClientDataSet.

procedure TForm1.ImportarCSV; var ArquivoCSV: TextFile; Contador, I: Integer; Linha: String; // Lê Linha e Monta os valores function MontaValor: String; var ValorMontado: String; begin ValorMontado := ''; inc(I); While Linha[I] >= ' ' do begin If Linha[I] = ';' then // vc pode usar qualquer delimitador ... eu // estou usando o ";" break; ValorMontado := ValorMontado + Linha[I]; inc(I); end; result := ValorMontado; end; begin // Carregando o arquivo ... AssignFile(ArquivoCSV, 'c:\Nome_do_Arquivo'); try Reset(ArquivoCSV); Readln(ArquivoCSV, Linha); Contador := 1; while not Eoln(ArquivoCSV) do begin if Contador = 1 then // Primeira Linha do arquivo (Pedido); begin I := 0; cdsPedido.Append; cdsPedidoCodigoCliente.AsString := MontaValor; cdsPedidoNomeDoCliente.AsString := MontaValor; cdsPedido.Post; end else begin // Demais Linhas (Itens do Pedido ) I := 0; cdsItensDoPedido.Append; cdsItensDoPedidoCodigoProduto.AsString := MontaValor; cdsItensDoPedidoNomeDoProduto.AsString := AnsiUpperCase(MontaValor); cdsItensDoPedidoQuantidade.AsFloat := StrToFloat(MontaValor); cdsItensDoPedidoPreco.AsCurrency := StrToCurr(MontaValor); cdsItensDoPedido.Post; end; Readln(ArquivoCSV, Linha); Contador := Contador + 1; end; finally CloseFile(ArquivoCSV); end; end;

Artigos relacionados