Delphi Can
CSV'ye veri aktarma - Baskı Önizleme

+- Delphi Can (https://www.delphican.com)
+-- Forum: Delphi (https://www.delphican.com/forumdisplay.php?fid=3)
+--- Forum: Mobil Platform - FireMonkey (FMX) (https://www.delphican.com/forumdisplay.php?fid=7)
+--- Konu Başlığı: CSV'ye veri aktarma (/showthread.php?tid=7657)



CSV'ye veri aktarma - Altıner - 27-03-2024

Selamlar,

CSV'ye excelde olduğu gibi her bir kolana olacak şekilde veri aktarma istiyorum, fakat her kolana istediğim veriyi aktaramadım.
Örnekler araştırdım fakat işe yarar bir şeyde bulamadım bu konuda bilgisi olan arkadaşların yardımını rica ederim.

procedure TForm1.Button1Click(Sender: TObject);
var
  I: Integer;
  csv: TStrings;
  FileName: String;
begin
  csv := TStringList.Create;
  csv.Clear;
  try
    FileName := Desktop + '12345678.csv';
    for I := 0 to ListView1.Items.Count - 1 do
    begin
      csv.Add(ListView1.Items[I].Data['A'].AsString);
      csv.Add(ListView1.Items[I].Data['B'].ToString);
      csv.Add(ListView1.Items[I].Data['C'].ToString);
      csv.Add(ListView1.Items[I].Data['D'].ToString);
      csv.Add(ListView1.Items[I].Data['E'].ToString);
    end;
    if csv.Text.Length > 0 then
    begin
      csv.SaveToFile(FileName);
    end;
  finally
    csv.Free;
  end;
end;



CSV'ye veri aktarma - enigma - 27-03-2024

.CSV dosyası aslında TEXT dosyasıdır. Bu yüzden istediğiniz bir satıra ve kolona doğrudan erişemezsiniz. Satır satır en baştan okutarak sıra ile erişebilirsiniz. İstediğiniz satıra ulaşsanız bile değiştirip güncellemeniz dosya yapısı sebebi ile mümkün değil. Ancak şunu yapabilirsiniz, CSV dosyasını bir Memo alanına "LoadFromFile" komutu ile okutup burada istediğiniz satırı ve sütunu bulup değiştirdikten sonra "SaveToFile" ile kayıt edebilirsiniz.


CSV'ye veri aktarma - Altıner - 27-03-2024

CVS'yi ben excel mantığında olduğunu sanıyordum.

Teşekkür ederim.


Cvp: CSV'ye veri aktarma - Mr.X - 27-03-2024

Merhaba,

CSV yazılımcılar için nimet niteliğindedir. ( Değilse de olmalı  Smile  )

Sanırım istediğiniz böyle bir şey;

[attachment=2645]

uses
 System.IOUtils;

procedure TForm3.KaydetmeButonuClick(Sender: TObject);
var
 csvStringList: TStringList;
 i, a         : integer;
 cacheCl      : string;
begin
 csvStringList := TStringList.Create;
 try
   cacheCl := '';
   csvStringList.BeginUpdate;
   for i := 1 to 5 do
   begin
     cacheCl := cacheCl + 'Sütun' + i.ToString + ';';
   end;
   cacheCl := Copy(cacheCl, 1, length(cacheCl));
   csvStringList.Add(cacheCl);

   for a := 1 to 10 do
   begin
     cacheCl := '';

     for I := 1 to 5 do
     begin
       cacheCl := cacheCl + 'Satır' + a.ToString + 'Sütun' + i.ToString + ';';
     end;
     csvStringList.Add(cacheCl);
   end;
   csvStringList.EndUpdate;
 finally
   csvStringList.SaveToFile(TPath.Combine(TPath.GetDocumentsPath, 'test.csv'), TEncoding.ANSI);
   FreeAndNil(csvStringList);
 end;

end;

procedure TForm3.CagirmaButonuClick(Sender: TObject);
begin
 Memo1.Lines.LoadFromFile(TPath.Combine(TPath.GetDocumentsPath, 'test.csv'));
end;

procedure TForm3.degistirmeButonuClick(Sender: TObject);
var
 csvReplaceStringList: TStringList;
 i                   : integer;
 cacheNewString      : string;
begin

 csvReplaceStringList                 := TStringList.Create;
 csvReplaceStringList.Delimiter       := ';';
 csvReplaceStringList.StrictDelimiter := false;
 try
   csvReplaceStringList.DelimitedText := Memo1.Lines[4];
   csvReplaceStringList[1]            := 'Delphican';

   cacheNewString := '';
   for I          := 0 to csvReplaceStringList.Count - 1 do
   begin
     cacheNewString := cacheNewString + csvReplaceStringList[i] + ';';
   end;

   Memo1.Lines[4] := cacheNewString;
 finally
   Memo1.Lines.SaveToFile(TPath.Combine(TPath.GetDocumentsPath, 'test.csv'), TEncoding.ANSI);
   FreeAndNil(csvReplaceStringList);
 end;

end;

Form arayüzü ( Form üzerine kopyala - yapıştır işlemi uygulayın. ) :

object degistirmeButonu: TButton
 Position.X = 24.000000000000000000
 Position.Y = 39.000000000000000000
 Size.Width = 298.000000000000000000
 Size.Height = 57.000000000000000000
 Size.PlatformDefault = False
 TabOrder = 0
 Text = '5. Sat'#305'r 2. S'#252'tunu Delphican Yap'
 TextSettings.Trimming = None
 OnClick = degistirmeButonuClick
end
object KaydetmeButonu: TButton
 Position.X = 24.000000000000000000
 Position.Y = 104.000000000000000000
 Size.Width = 145.000000000000000000
 Size.Height = 57.000000000000000000
 Size.PlatformDefault = False
 TabOrder = 2
 Text = 'Kaydet'
 TextSettings.Trimming = None
 OnClick = KaydetmeButonuClick
end
object CagirmaButonu: TButton
 Position.X = 177.000000000000000000
 Position.Y = 104.000000000000000000
 Size.Width = 145.000000000000000000
 Size.Height = 57.000000000000000000
 Size.PlatformDefault = False
 TabOrder = 1
 Text = #199'a'#287#305'r'
 TextSettings.Trimming = None
 OnClick = CagirmaButonuClick
end
object Memo1: TMemo
 Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
 DataDetectorTypes = []
 Position.X = 24.000000000000000000
 Position.Y = 169.000000000000000000
 Size.Width = 298.000000000000000000
 Size.Height = 264.000000000000000000
 Size.PlatformDefault = False
 TabOrder = 3
 Viewport.Width = 294.000000000000000000
 Viewport.Height = 260.000000000000000000
end



Cvp: CSV'ye veri aktarma - enigma - 28-03-2024

(27-03-2024, Saat: 16:20)Mr.X Adlı Kullanıcıdan Alıntı: Merhaba,

CSV yazılımcılar için nimet niteliğindedir. ( Değilse de olmalı  Smile  )

Sanırım istediğiniz böyle bir şey;



uses
 System.IOUtils;

procedure TForm3.KaydetmeButonuClick(Sender: TObject);
var
 csvStringList: TStringList;
 i, a         : integer;
 cacheCl      : string;
begin
 csvStringList := TStringList.Create;
 try
   cacheCl := '';
   csvStringList.BeginUpdate;
   for i := 1 to 5 do
   begin
     cacheCl := cacheCl + 'Sütun' + i.ToString + ';';
   end;
   cacheCl := Copy(cacheCl, 1, length(cacheCl));
   csvStringList.Add(cacheCl);

   for a := 1 to 10 do
   begin
     cacheCl := '';

     for I := 1 to 5 do
     begin
       cacheCl := cacheCl + 'Satır' + a.ToString + 'Sütun' + i.ToString + ';';
     end;
     csvStringList.Add(cacheCl);
   end;
   csvStringList.EndUpdate;
 finally
   csvStringList.SaveToFile(TPath.Combine(TPath.GetDocumentsPath, 'test.csv'), TEncoding.ANSI);
   FreeAndNil(csvStringList);
 end;

end;

procedure TForm3.CagirmaButonuClick(Sender: TObject);
begin
 Memo1.Lines.LoadFromFile(TPath.Combine(TPath.GetDocumentsPath, 'test.csv'));
end;

procedure TForm3.degistirmeButonuClick(Sender: TObject);
var
 csvReplaceStringList: TStringList;
 i                   : integer;
 cacheNewString      : string;
begin

 csvReplaceStringList                 := TStringList.Create;
 csvReplaceStringList.Delimiter       := ';';
 csvReplaceStringList.StrictDelimiter := false;
 try
   csvReplaceStringList.DelimitedText := Memo1.Lines[4];
   csvReplaceStringList[1]            := 'Delphican';

   cacheNewString := '';
   for I          := 0 to csvReplaceStringList.Count - 1 do
   begin
     cacheNewString := cacheNewString + csvReplaceStringList[i] + ';';
   end;

   Memo1.Lines[4] := cacheNewString;
 finally
   Memo1.Lines.SaveToFile(TPath.Combine(TPath.GetDocumentsPath, 'test.csv'), TEncoding.ANSI);
   FreeAndNil(csvReplaceStringList);
 end;

end;

Form arayüzü ( Form üzerine kopyala - yapıştır işlemi uygulayın. ) :

object degistirmeButonu: TButton
 Position.X = 24.000000000000000000
 Position.Y = 39.000000000000000000
 Size.Width = 298.000000000000000000
 Size.Height = 57.000000000000000000
 Size.PlatformDefault = False
 TabOrder = 0
 Text = '5. Sat'#305'r 2. S'#252'tunu Delphican Yap'
 TextSettings.Trimming = None
 OnClick = degistirmeButonuClick
end
object KaydetmeButonu: TButton
 Position.X = 24.000000000000000000
 Position.Y = 104.000000000000000000
 Size.Width = 145.000000000000000000
 Size.Height = 57.000000000000000000
 Size.PlatformDefault = False
 TabOrder = 2
 Text = 'Kaydet'
 TextSettings.Trimming = None
 OnClick = KaydetmeButonuClick
end
object CagirmaButonu: TButton
 Position.X = 177.000000000000000000
 Position.Y = 104.000000000000000000
 Size.Width = 145.000000000000000000
 Size.Height = 57.000000000000000000
 Size.PlatformDefault = False
 TabOrder = 1
 Text = #199'a'#287#305'r'
 TextSettings.Trimming = None
 OnClick = CagirmaButonuClick
end
object Memo1: TMemo
 Touch.InteractiveGestures = [Pan, LongTap, DoubleTap]
 DataDetectorTypes = []
 Position.X = 24.000000000000000000
 Position.Y = 169.000000000000000000
 Size.Width = 298.000000000000000000
 Size.Height = 264.000000000000000000
 Size.PlatformDefault = False
 TabOrder = 3
 Viewport.Width = 294.000000000000000000
 Viewport.Height = 260.000000000000000000
end
Mr.X resmen proje yazmış Smile


Cvp: CSV'ye veri aktarma - Mr.X - 28-03-2024

(28-03-2024, Saat: 11:24)enigma Adlı Kullanıcıdan Alıntı: Mr.X resmen proje yazmış Smile

Faydalı olduysa ne mutlu hocam  Smile