Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
CSV'ye veri aktarma
#1
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;
Cevapla
#2
.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.
Cevapla
#3
CVS'yi ben excel mantığında olduğunu sanıyordum.

Teşekkür ederim.
Cevapla
#4
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
FMX - Software Developer | Serhat Yanalak
Cevapla
#5
(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
Cevapla
#6
(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
FMX - Software Developer | Serhat Yanalak
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Web ipnut alanına veri girme Altıner 4 382 12-03-2024, Saat: 21:26
Son Yorum: Altıner
  Android Fmx uzak veri tabanından veri çekmek erkutolga 12 1.588 22-11-2023, Saat: 10:27
Son Yorum: Mesut
  Mobil App. ile MQTT brokera bağlanma ve Veri çekme yemre 3 879 27-04-2023, Saat: 13:56
Son Yorum: yemre
  Android veri gönderme hakankvk 3 822 29-12-2022, Saat: 18:40
Son Yorum: hakankvk
  Webden veri alma Husv 3 1.078 23-12-2022, Saat: 00:59
Son Yorum: Husv



Konuyu Okuyanlar: 1 Ziyaretçi