Lesen und Schreiben von CSV-Dateien.

Allgemeine Beispiele zur Verwendung der Klasse csv finden sie hier.

Lesen und Schreiben von CSV-Dateien. Für das Format der Datei gelten folgende Regeln:

Hier ein sehr einfaches Besipiel mit ',' als Spaltentrenner.

aaa,bbb\,BBB
123,0xDEAEDBEEF
123.456,1.23456E+02

static CSVFile csv::open(
  char* path,
  char* separator,
  int autoSave = 0,
  int useGlobal = 1)

Öffne eine CSV-Datei.

Name Typ Default Beschreibung
Return CSVFile   0 : Fehler
sonst : Geöffnete CSV-Datei zur Weiterverwendeng in den csv Funktionen, siehe die Beschreibungen des Parameters useGlobal.
path char* oder String - Vollständiger Pfad der CSV-Datei. Der Pfad darf mit einem $ALIAS-Namen beginnen.
separator char* oder String - Trennzeichen der CSV-Datei.

Trennzeichen dürfen länger als ein Buchstabe sein. Einzige Bedingung ist, dass das Trennzeichen keine Zeilentrenner (\n oder \r) enthält. Soll das Trennzeichen im Inhalt verwendet werden, muss es mit einem einzelnen Backslash (\) vor der Zeichenkette maskiert werden.
autoSave int 0 Soll die Datei vor dem Schließen automatisch gesichert werden?

0 : Nein
1 : Ja
useGlobal int 1 Datei global oder nur für das aktuelle Skript öffnen?

0 : Datei nur für das aktuelle Skript öffnen. In diesem Fall muss das erhaltene Ergebnis der Funktion mit close wieder geschlossen werden!

1 : Datei global öffnen. Die CSV-Datei bleibt bis zum Trennen der aktuellen Datenverbindung oder close geöffnet. Wurde die Datei bereits in einem vorherigen Skript geöffnet, wird diese bereits geöffnete Datei zurückgegeben. Da Sie die Datei wahrscheinlich in mehreren Skripten verwenden wollen, ist das das empfohlene Vorgehen.

v4.1.7 R26836, 21. Apr 2020

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

static int csv::lines(CSVFile csvf)

Anzahl der Zeilen in der Datei.

Name Typ Default Beschreibung
Return int   > 0 : Anzahl der Zeilen
0 : Leer
-1 : Fehler
csvf CSVFile - Mit open geöffnete CSV-Datei.

v4.1.7 R26846, 22. Apr 2020

priint:comet InDesign® Plug-Ins, comet_pdf

open
cols

static int csv::cols(CSVFile csvf, int line)

Anzahl der Spalten einer Zeile der Datei.

Beachten Sie bitte, dass Zeilen verschieden viele Spalten haben können.

Name Typ Default Beschreibung
Return int   > 0 : Anzahl der Spalten einer gegebenen Zeile
0 : Leer
-1 : Fehler
csvf CSVFile - Mit open geöffnete CSV-Datei.
line int - 0-basierte Zeilennummer

v4.1.7 R26846, 22. Apr 2020

priint:comet InDesign® Plug-Ins, comet_pdf

open
lines

static int csv::read(
  CSVFile csvf,
  int line,
  int col,
  int type,
  char* value,
  int maxlen = 0)

Lies einen Wert aus einer CSV-Datei.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
csvf CSVFile - Mit open geöffnete CSV-Datei.
line int - 0-basierte Zeilennummer
col int - 0-basierte Spalte der Zeile
type int - Welchen Datentyp hat der Text in der CSV-Datei?

1 - kInt : Ganzzahl
2 - kFloat : Kommazahl
3 - kString : Text
value int*, float* char*, String - Der Datentyp der Variable ist abhängig vom Wert des Parameters type:

1 - kInt : &int_var
2 - kFloat : &float_var
3 - kString : char* oder String
maxlen int 0 Nur bei char* : Maximale Länge des Ergebnisses.

0 : Beliebig
#include "internal/types.h"

v4.1.7 R26836, 21. Apr 2020

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

static int csv::write(
  CSVFile csvf,
  int line,
  int col,
  int type,
  char* value,
  int maxlen = 0)

Schreibe einen Wert in eine CSV-Datei.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
csvf CSVFile - Mit open geöffnete CSV-Datei.
line int - 0-basierte Zeilennummer
col int - 0-basierte Spalte der Zeile
type int - Datentyp des Parameters value

1 - kInt : Ganzzahl
2 - fFloat : Kommazahl
3 - kString : Text
value int*, float* char*, String - Der Datentyp der Variable ist abhängig vom Wert des Parameters type:

1 - kInt : int
2 - kFloat : float
3 - kString : char* oder String
#include "internal/types.h"

v4.1.7 R26836, 21. Apr 2020

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

static int csv::save(CSVFile csvf)

Sichere eine CSV-Datei. Die Datei bleibt weiter geöffnet.

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
csvf CSVFile - Mit open geöffnete CSV-Datei.

v4.1.7 R26836, 21. Apr 2020

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

static int csv::close(CSVFile csvf)

Schließe eine CSV-Datei und entferne das Objekt aus dem Speicher.

Die Funktion schließt auch global geöffnete Dateien und sollte daher bei global geöffneten Dateien nur in Ausnahmenfällen verwendet werden!

Name Typ Default Beschreibung
Return int   0 oder Fehlercode
csvf CSVFile - Mit open geöffnete CSV-Datei

v4.1.7 R26836, 21. Apr 2020

priint:comet InDesign® Plug-Ins, comet_pdf, Illustrator

open

Lesen aus einer CSV-Datei

#include "internal/types.h"
#include "internal/text.h"
int main () { String str = string::alloc (); CSVFile csv; int vi; float vf; String vs = string::alloc (); int r, c; int convqu = prefs::get_convert_quotas ();
// Open the CSV file // csv = csv::open ("$DESKTOP/aaa.csv", ","); if (!csv) { showmessage ("Cannot open CSV file"); string::release (str);
return 0; }
prefs::set_convert_quotas (kOff);
// Load some data here // frame::replace (gFrame, ""); for (r = 0; r < csv::lines (csv); r++) { for (c = 0; c < csv::cols (csv, r); c++) { string::set (str, "%%!TT_html_[%d, %d] : <b>", r, c); if (csv::read (csv, r, c, kInt, &vi) == 0) { string::append (str, "%d", vi); } else if (csv::read (csv, r, c, kFloat, &vf) == 0) { string::append (str, "%.6f", vf); } else if (csv::read (csv, r, c, kString, vs) == 0) { string::append (str, "'%s'", vs); }
string::append (str, "</b>"); string::append (str, " "); frame::append (gFrame, str); frame::append (gFrame, "\n"); } frame::append (gFrame, "\n"); }
// Clean up // string::release (str); csv::close (csv);
prefs::set_convert_quotas (convqu);
return 0; }

Schreiben in eine CSV-Datei

#include "internal/types.h"
#include "internal/text.h"
int main () { CSVFile csv; int r; String str = string::alloc ();
// Open the CSV file // csv = csv::open ("$DESKTOP/bbb.csv", ","); if (!csv) { showmessage ("Cannot open CXSV file"); string::release (str);
return 0; }
// Write some data here // string::set (str, "Your change"); for (r = 1; r < 11; r++) { csv::write (csv, r, 0, kString, "28.10.2018, 12:34"); csv::write (csv, r, 1, kString, str); csv::write (csv, r, 2, kInt, r); string::append (str, " ä"); }
// Clean up // csv::save (csv); csv::close (csv);
return 0; }

Seit
v4.1.7 R26836, 21. Apr 2020

Alphabetic index HTML hierarchy of classes or Java