Bitbybit Docs
    Bereite Suchindex vor...

    Klasse CSVBitByBit

    Lesen und Schreiben von CSV, dem Klartext-Tabellenformat mit einer Zeile pro Datensatz und einem Trennzeichen zwischen den Zellen. Die Parser teilen an rowSeparator und columnSeparator, berücksichtigen in doppelte Anführungszeichen gesetzte Zellen mit verdoppelten Anführungszeichen darin, überspringen Leerzeilen und lesen \n, \t und \r, als zwei Zeichen geschrieben, als das Echte; die Writer setzen eine Zelle in Anführungszeichen, die ein Trennzeichen, ein Anführungszeichen oder einen Zeilenumbruch enthält.

    Index

    Konstruktoren

    generate

    • Schreibt eine Liste von Zeilen, jede eine Liste von Zellen, als CSV-Text; eine Zelle, die ein Trennzeichen, ein Anführungszeichen oder einen Zeilenumbruch enthält, wird in doppelte Anführungszeichen gesetzt.

      Beispiel: [["name", "age"], ["John", "30"]] -> name,age und John,30 auf zwei Zeilen.

      Parameter

      Rückgabewert string

      Der CSV-Text

      const csv = bitbybit.csv.arrayToCsv({ array: [["x", "y", "z"], [1, 2, 3]], rowSeparator: "\n", columnSeparator: "," });
      
    • Schreibt eine Liste von Objekten als CSV-Text mit den Spalten, die Sie in headers nennen, in dieser Reihenfolge; eine Eigenschaft, die einem Objekt fehlt, wird zu einer leeren Zelle.

      Mit includeHeaders true enthält die erste Zeile die Kopfzeilennamen. Beispiel: [{ name: "John", age: "30" }] mit Kopfzeilen ["name", "age"] -> name,age und John,30.

      Typenparameter

      • T = Record<string, unknown>

      Parameter

      • inputs: JsonToCsvDto<T>

        Die Objekte, die Spaltennamen, das Kopfzeilen-Flag und die Trennzeichen

      Rückgabewert string

      Der CSV-Text

      const csv = bitbybit.csv.jsonToCsv({ json: people, headers: ["name", "age"], includeHeaders: true, rowSeparator: "\n", columnSeparator: "," });
      
    • Schreibt eine Liste von Objekten als CSV-Text und verwendet die Eigenschaftsnamen des ersten Objekts als Spalten, in ihrer Reihenfolge; eine leere Liste ergibt leeren Text.

      Beispiel: [{ name: "John", age: "30" }] -> name,age und John,30.

      Typenparameter

      • T = Record<string, unknown>

      Parameter

      Rückgabewert string

      Der CSV-Text

      const csv = bitbybit.csv.jsonToCsvAuto({ json: people, includeHeaders: true, rowSeparator: "\n", columnSeparator: "," });
      

    parse

    • Teilt CSV-Text in eine Liste von Zeilen auf, jede eine Liste von Zellen-Zeichenketten; nichts wird in Zahlen umgewandelt.

      Leere Zeilen werden übersprungen, Zellen werden mit ihrer Zeile getrimmt, und eine Zelle in doppelten Anführungszeichen darf das Trennzeichen und verdoppelte Anführungszeichen enthalten. Beispiel: a,b,c und 1,2,3 auf zwei Zeilen -> [["a", "b", "c"], ["1", "2", "3"]].

      Parameter

      Rückgabewert string[][]

      Die Zeilen als Listen von Zellen-Zeichenketten

      const rows = bitbybit.csv.parseToArray({ csv: "x,y,z\n1,2,3\n4,5,6", rowSeparator: "\n", columnSeparator: "," });
      
    • Verwandelt CSV-Text in eine Liste von Objekten, eines pro Datenzeile, mit den Kopfzeilennamen der Zeile headerRow als Schlüsseln.

      Zeilen beginnen bei dataStartRow, in numberColumns genannte Spalten werden zu Zahlen und eine fehlende Zelle wird zu einer leeren Zeichenkette. Beispiel: name,age dann John,30 -> [{ name: "John", age: "30" }].

      Typenparameter

      • T = Record<string, string | number>

      Parameter

      • inputs: ParseToJsonDto

        Der CSV-Text, die Indizes der Kopf- und Datenzeilen, die Trennzeichen und die Zahlenspalten

      Rückgabewert T[]

      Ein Objekt pro Datenzeile

      const people = bitbybit.csv.parseToJson({ csv: "name,age\nJohn,30\nJane,25", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: ",", numberColumns: ["age"] });
      
    • Verwandelt CSV-Text in eine Liste von Objekten mit den von Ihnen angegebenen headers als Schlüsseln, für Dateien ohne Kopfzeile; eine Kopfzeile, die die Datei doch hat, wird übersprungen, indem dataStartRow dahinter gesetzt wird.

      In numberColumns genannte Spalten werden zu Zahlen. Beispiel: John,30 mit Kopfzeilen ["name", "age"] -> [{ name: "John", age: "30" }].

      Typenparameter

      • T = Record<string, string | number>

      Parameter

      • inputs: ParseToJsonWithHeadersDto

        Der CSV-Text, die Kopfzeilennamen, die erste Datenzeile, die Trennzeichen und die Zahlenspalten

      Rückgabewert T[]

      Ein Objekt pro Datenzeile

      const people = bitbybit.csv.parseToJsonWithHeaders({ csv: "John,30\nJane,25", headers: ["name", "age"], dataStartRow: 0, rowSeparator: "\n", columnSeparator: ",", numberColumns: ["age"] });
      

    query

    • Listet jeden Wert einer Spalte auf, gefunden über ihren Kopfzeilennamen, in Zeilenreihenfolge; eine Zeile ohne diese Zelle ergibt eine leere Zeichenkette.

      Mit asNumber true werden die Werte als Zahlen gelesen. Beispiel: name,age dann John,30 und Jane,25, Spalte name -> ["John", "Jane"].

      Parameter

      • inputs: QueryColumnDto

        Der CSV-Text, der Spaltenname, die Indizes der Kopf- und Datenzeilen, die Trennzeichen und das Zahlen-Flag

      Rückgabewert (string | number)[]

      Die Werte der Spalte, von oben nach unten

      const ages = bitbybit.csv.queryColumn({ csv: "name,age\nJohn,30\nJane,25", column: "age", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: ",", asNumber: true });
      
    • Behält nur die Zeilen, deren Zelle in column gleich value ist, und liefert sie als Objekte mit den Kopfzeilen als Schlüsseln.

      Der Vergleich erfolgt auf Text, sofern die Spalte nicht in numberColumns aufgeführt ist, in welchem Fall beide Seiten als Zahlen verglichen werden. Beispiel: Spalte age, Wert 30 -> [{ name: "John", age: "30" }].

      Typenparameter

      • T = Record<string, string | number>

      Parameter

      • inputs: QueryRowsByValueDto

        Der CSV-Text, der Spaltenname, der Wert, die Zeilenindizes, die Trennzeichen und die Zahlenspalten

      Rückgabewert T[]

      Die passenden Zeilen als Objekte

      const thirty = bitbybit.csv.queryRowsByValue({ csv: "name,age\nJohn,30\nJane,25", column: "age", value: "30", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: "," });
      
    • Liest die Zellen der Zeile headerRow als Kopfzeilennamen; ein Zeilenindex hinter dem Ende löst einen Fehler aus.

      Beispiel: name,age dann John,30 -> ["name", "age"].

      Parameter

      • inputs: GetHeadersDto

        Der CSV-Text, der Index der Kopfzeile und die Trennzeichen

      Rückgabewert string[]

      Die Kopfzeilennamen in Spaltenreihenfolge

      const headers = bitbybit.csv.getHeaders({ csv: "name,age\nJohn,30", headerRow: 0, rowSeparator: "\n", columnSeparator: "," });
      
    • Zählt die Datenzeilen: alle nicht leeren Zeilen minus die vor dataStartRow, oder minus eine Kopfzeile, wenn hasHeaders true ist und dataStartRow weggelassen wird.

      Beispiel: name,age, John,30, Jane,25 mit Kopfzeilen -> 2.

      Parameter

      • inputs: GetRowCountDto

        Der CSV-Text, das Kopfzeilen-Flag, die optionale erste Datenzeile und die Trennzeichen

      Rückgabewert number

      Die Anzahl der Datenzeilen

      const count = bitbybit.csv.getRowCount({ csv: "name,age\nJohn,30\nJane,25", hasHeaders: true, rowSeparator: "\n", columnSeparator: "," });
      
    • Zählt die Zellen der ersten nicht leeren Zeile, was die Anzahl der Spalten ist; leerer Text ergibt 0.

      Beispiel: name,age,city dann John,30,NYC -> 3.

      Parameter

      Rückgabewert number

      Die Anzahl der Spalten

      const columns = bitbybit.csv.getColumnCount({ csv: "name,age,city\nJohn,30,NYC", rowSeparator: "\n", columnSeparator: "," });