Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   DBGRID export nach csv mit Titel (https://www.delphipraxis.net/181605-dbgrid-export-nach-csv-mit-titel.html)

Luckner 28. Aug 2014 13:18

Datenbank: Firebird • Version: 2.5 • Zugriff über: Dataset

DBGRID export nach csv mit Titel
 
Hallo,
habe hier eine Routine gefunden, mit der ich die Datensätze aus einem DBGrid in csv-Datei exportieren kann. Das klappt ohne Titel auch gut. Wie kann ich die Titel übernehmen? Hier die Procedure:

Delphi-Quellcode:
procedure TFrameArtikel.ButtonCsvExportClick(Sender: TObject);
  const
  Delim = ';';
var
  S: String;
  I: Integer;
  Stream: TFileStream;
begin
  Stream := TFileStream.Create('c:\temp\Artikel.csv', fmCreate);
  DatamoduleArtikel.DataModule1.IBDataSetArtikelCSV.Open;
  DatamoduleArtikel.DataModule1.IBDataSetArtikelCSV.Last;
  DatamoduleArtikel.DataModule1.IBDataSetArtikelCSV.First;

  while not DatamoduleArtikel.DataModule1.IBDataSetArtikelCSV.Eof do
  begin
    S := '';

    for I := 0 to JvDBGridArtikelCSV.Columns.Count - 1 do
      S := S + TColumn(JvDBGridArtikelCSV.Columns[I]).Field.AsString + Delim;

    S := S + CHR(13);
    Stream.Write(PChar(S)^, Length(S));
    DatamoduleArtikel.DataModule1.IBDataSetArtikelCSV.Next();
  end;

  Stream.Free();
  DatamoduleArtikel.DataModule1.IBDataSetArtikelCSV.Close;
end;
Danke.

DeddyH 28. Aug 2014 13:36

AW: DBGRID export nach csv mit Titel
 
Hol Dir doch Anregungen bei Uwe Raabe: http://www.uweraabe.de/Blog/2013/11/...ns-csv-export/

himitsu 28. Aug 2014 13:50

AW: DBGRID export nach csv mit Titel
 
TStringList?

Eine für die Datei und eine für die (aktuelle) Zeile

Columns durchgehen und per Add die Spaltennamen in ZeilenListe
danach CommaText der ZeilenListe per Add in die CSVListe. (oder DelimitedText mit eigenem Delimiter und StrictDelimiter=True)
Nur je Zeile das Selber nochmal für die Feldinhalte
und am Ende noch ein SaveToFile.



CHR(13) ... meintest du nicht eher CHR(10) aka #10, oder wenigstens sLineBreak?
Einige Programme kommen mit #13 nicht klar.
OK, das alte Nodepad kommt mit der #10 nicht klar, aber fast alle Windowsprogramme kennen #13#10. :angel:


PS: Schau mal ob dein DataSet nicht sogar ein SaveToFile besitzt.



[edit]
Hat mir Uwe etwa zur Hälfte abgeguckt? :lol:

DeddyH 28. Aug 2014 13:56

AW: DBGRID export nach csv mit Titel
 
Oder den verlinkten Code nehmen, das Dataset und den Dateinamen übergeben und glücklich sein. Immer diese Ignoranz *grmpf*

Sir Rufo 28. Aug 2014 14:02

AW: DBGRID export nach csv mit Titel
 
Zitat:

Zitat von DeddyH (Beitrag 1270148)
Oder den verlinkten Code nehmen, das Dataset und den Dateinamen übergeben und glücklich sein. Immer diese Ignoranz *grmpf*

Öhm und dann wird das so wie im DBGrid in die CSV geschrieben? Halte ich für ein Gerücht ;)

Jasocul 28. Aug 2014 14:06

AW: DBGRID export nach csv mit Titel
 
Schaut euch mal den Source an.
Die Spalten werden über das Grid iteriert und nicht über das DataSet.
Das DataSet wird nur zum Durchlaufen aller Datensätze verwendet.

Aber auch ein JvDBGrid sollte eine Property für die Überschriften haben.
Ich vermute mal, dass JvDBGrid.Columns[i].Title.Caption die gewünschten Überschriften liefert.

Neumann 28. Aug 2014 14:23

AW: DBGRID export nach csv mit Titel
 
Wenn es was kosten darf kann man auch das dbadvgrid von TMS nehmen; damit bekommt man CSV-Export und auch etliche andere Exportformate (XML, Excel usw.) sehr einfach hin.

Ralf

himitsu 28. Aug 2014 15:18

AW: DBGRID export nach csv mit Titel
 
Auch die DevExpress-Grids bieten fertige Exportfunktionen (CSV, XLS, PDF, ...) und andere Komponentensamlungen bestimmt ebenfalls.
Und es gibt natürlich spezielle Exportgeneratoren.

Luckner 28. Aug 2014 15:36

AW: DBGRID export nach csv mit Titel
 
Das JvDBGrid hat eine Property für die Überschriften. Genau, wie bei Jasocul beschrieben. Aber wie in dieser Procedure benutzen? Irgendwie in der schon vorh. Schleife oder schon davor?

Luckner

DeddyH 28. Aug 2014 15:38

AW: DBGRID export nach csv mit Titel
 
Davor, oder willst Du bei jedem Datensatz noch einmal die Überschriften ermitteln? Kann man zwar machen, bringt aber nichts, es sei denn, das Programm läuft einem zu schnell :lol:


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz