Bitbybit Docs
    Preparing search index...

    Class CSVBitByBit

    Lire et écrire du CSV, le format de table en texte brut avec une ligne par ligne de texte et un séparateur entre les cellules. Les analyseurs découpent sur rowSeparator et columnSeparator, respectent les cellules entre guillemets doubles avec des guillemets doublés à l'intérieur, sautent les lignes vides et lisent \n, \t et \r écrits comme deux caractères comme la vraie chose ; les écrivains mettent entre guillemets une cellule qui contient un séparateur, un guillemet ou un saut de ligne.

    Index

    Constructors

    generate

    • Écrit une liste de lignes, chacune une liste de cellules, en texte CSV ; une cellule contenant un séparateur, un guillemet ou un saut de ligne est entourée de guillemets doubles.

      Exemple : [["name", "age"], ["John", "30"]] -> name,age et John,30 sur deux lignes.

      Parameters

      Returns string

      Le texte CSV

      const csv = bitbybit.csv.arrayToCsv({ array: [["x", "y", "z"], [1, 2, 3]], rowSeparator: "\n", columnSeparator: "," });
      
    • Écrit une liste d'objets en texte CSV avec les colonnes que vous nommez dans headers, dans cet ordre ; une propriété absente d'un objet devient une cellule vide.

      Avec includeHeaders vrai, la première ligne contient les noms d'en-tête. Exemple : [{ name: "John", age: "30" }] avec les en-têtes ["name", "age"] -> name,age et John,30.

      Type Parameters

      • T = Record<string, unknown>

      Parameters

      • inputs: JsonToCsvDto<T>

        Les objets, les noms de colonnes, l'indicateur d'en-tête et les séparateurs

      Returns string

      Le texte CSV

      const csv = bitbybit.csv.jsonToCsv({ json: people, headers: ["name", "age"], includeHeaders: true, rowSeparator: "\n", columnSeparator: "," });
      
    • Écrit une liste d'objets en texte CSV en utilisant les noms de propriété du premier objet comme colonnes, dans leur ordre ; une liste vide donne un texte vide.

      Exemple : [{ name: "John", age: "30" }] -> name,age et John,30.

      Type Parameters

      • T = Record<string, unknown>

      Parameters

      Returns string

      Le texte CSV

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

    parse

    • Découpe un texte CSV en une liste de lignes, chacune une liste de chaînes de cellules ; rien n'est converti en nombres.

      Les lignes vides sont sautées, les cellules sont nettoyées avec leur ligne, et une cellule entre guillemets doubles peut contenir le séparateur et des guillemets doublés. Exemple : a,b,c et 1,2,3 sur deux lignes -> [["a", "b", "c"], ["1", "2", "3"]].

      Parameters

      Returns string[][]

      Les lignes sous forme de listes de chaînes de cellules

      const rows = bitbybit.csv.parseToArray({ csv: "x,y,z\n1,2,3\n4,5,6", rowSeparator: "\n", columnSeparator: "," });
      
    • Transforme un texte CSV en une liste d'objets, un par ligne de données, indexés par les noms d'en-tête de la ligne headerRow.

      Les lignes commencent à dataStartRow, les colonnes nommées dans numberColumns deviennent des nombres et une cellule manquante devient une chaîne vide. Exemple : name,age puis John,30 -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: ParseToJsonDto

        Le texte CSV, les index des lignes d'en-tête et de données, les séparateurs et les colonnes numériques

      Returns T[]

      Un objet par ligne de données

      const people = bitbybit.csv.parseToJson({ csv: "name,age\nJohn,30\nJane,25", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: ",", numberColumns: ["age"] });
      
    • Transforme un texte CSV en une liste d'objets indexés par les headers que vous donnez, pour les fichiers sans ligne d'en-tête ; une ligne d'en-tête que le fichier contient est sautée en mettant dataStartRow après elle.

      Les colonnes nommées dans numberColumns deviennent des nombres. Exemple : John,30 avec les en-têtes ["name", "age"] -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: ParseToJsonWithHeadersDto

        Le texte CSV, les noms d'en-tête, la ligne de début des données, les séparateurs et les colonnes numériques

      Returns T[]

      Un objet par ligne de données

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

    query

    • Liste chaque valeur d'une colonne, trouvée par son nom d'en-tête, dans l'ordre des lignes ; une ligne sans cette cellule donne une chaîne vide.

      Avec asNumber vrai, les valeurs sont analysées en nombres. Exemple : name,age puis John,30 et Jane,25, colonne name -> ["John", "Jane"].

      Parameters

      • inputs: QueryColumnDto

        Le texte CSV, le nom de la colonne, les index des lignes d'en-tête et de données, les séparateurs et l'indicateur numérique

      Returns (string | number)[]

      Les valeurs de la colonne, de haut en bas

      const ages = bitbybit.csv.queryColumn({ csv: "name,age\nJohn,30\nJane,25", column: "age", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: ",", asNumber: true });
      
    • Ne garde que les lignes dont la cellule de column est égale à value, en les donnant sous forme d'objets indexés par les en-têtes.

      La comparaison se fait sur le texte sauf si la colonne est listée dans numberColumns, auquel cas les deux côtés sont comparés en nombres. Exemple : colonne age, valeur 30 -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: QueryRowsByValueDto

        Le texte CSV, le nom de la colonne, la valeur, les index de lignes, les séparateurs et les colonnes numériques

      Returns T[]

      Les lignes correspondantes sous forme d'objets

      const thirty = bitbybit.csv.queryRowsByValue({ csv: "name,age\nJohn,30\nJane,25", column: "age", value: "30", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: "," });
      
    • Lit les cellules de la ligne headerRow comme noms d'en-tête ; un index de ligne au-delà de la fin lève une erreur.

      Exemple : name,age puis John,30 -> ["name", "age"].

      Parameters

      • inputs: GetHeadersDto

        Le texte CSV, l'index de la ligne d'en-tête et les séparateurs

      Returns string[]

      Les noms d'en-tête dans l'ordre des colonnes

      const headers = bitbybit.csv.getHeaders({ csv: "name,age\nJohn,30", headerRow: 0, rowSeparator: "\n", columnSeparator: "," });
      
    • Compte les lignes de données : toutes les lignes non vides moins celles avant dataStartRow, ou moins une ligne d'en-tête quand hasHeaders est vrai et que dataStartRow est omis.

      Exemple : name,age, John,30, Jane,25 avec en-têtes -> 2.

      Parameters

      • inputs: GetRowCountDto

        Le texte CSV, l'indicateur d'en-tête, la ligne de début des données facultative et les séparateurs

      Returns number

      Le nombre de lignes de données

      const count = bitbybit.csv.getRowCount({ csv: "name,age\nJohn,30\nJane,25", hasHeaders: true, rowSeparator: "\n", columnSeparator: "," });
      
    • Compte les cellules de la première ligne non vide, ce qui est le nombre de colonnes ; un texte vide donne 0.

      Exemple : name,age,city puis John,30,NYC -> 3.

      Parameters

      Returns number

      Le nombre de colonnes

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