Bitbybit Docs
    Preparing search index...

    Class CSVBitByBit

    Чтение и запись CSV, текстового табличного формата с одной строкой на линию и разделителем между ячейками. Парсеры разделяют по rowSeparator и columnSeparator, учитывают ячейки в двойных кавычках с удвоенными кавычками внутри, пропускают пустые строки и читают \n, \t и \r, записанные двумя символами, как настоящие; писатели заключают в кавычки ячейку, содержащую разделитель, кавычку или перенос строки.

    Index

    Constructors

    generate

    • Записывает список строк, каждая - список ячеек, как текст CSV; ячейка, содержащая разделитель, кавычку или перенос строки, заключается в двойные кавычки.

      Пример: [["name", "age"], ["John", "30"]] -> name,age и John,30 на двух строках.

      Parameters

      • inputs: ArrayToCsvDto

        Строки и два разделителя

      Returns string

      Текст CSV

      const csv = bitbybit.csv.arrayToCsv({ array: [["x", "y", "z"], [1, 2, 3]], rowSeparator: "\n", columnSeparator: "," });
      
    • Записывает список объектов как текст CSV со столбцами, которые вы называете в headers, в этом порядке; свойство, которого у объекта нет, становится пустой ячейкой.

      При includeHeaders равном true первая строка содержит имена заголовков. Пример: [{ name: "John", age: "30" }] с заголовками ["name", "age"] -> name,age и John,30.

      Type Parameters

      • T = Record<string, unknown>

      Parameters

      • inputs: JsonToCsvDto<T>

        Объекты, имена столбцов, флаг заголовка и разделители

      Returns string

      Текст CSV

      const csv = bitbybit.csv.jsonToCsv({ json: people, headers: ["name", "age"], includeHeaders: true, rowSeparator: "\n", columnSeparator: "," });
      
    • Записывает список объектов как текст CSV, используя имена свойств первого объекта как столбцы, в их порядке; пустой список дает пустой текст.

      Пример: [{ name: "John", age: "30" }] -> name,age и John,30.

      Type Parameters

      • T = Record<string, unknown>

      Parameters

      • inputs: JsonToCsvAutoDto<T>

        Объекты, флаг заголовка и разделители

      Returns string

      Текст CSV

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

    parse

    • Разбивает текст CSV на список строк, каждая - список строковых ячеек; ничего не преобразуется в числа.

      Пустые строки пропускаются, ячейки обрезаются вместе со своей строкой, а ячейка в двойных кавычках может содержать разделитель и удвоенные кавычки. Пример: a,b,c и 1,2,3 на двух строках -> [["a", "b", "c"], ["1", "2", "3"]].

      Parameters

      Returns string[][]

      Строки как списки строковых ячеек

      const rows = bitbybit.csv.parseToArray({ csv: "x,y,z\n1,2,3\n4,5,6", rowSeparator: "\n", columnSeparator: "," });
      
    • Превращает текст CSV в список объектов, по одному на строку данных, с ключами из имен заголовков строки headerRow.

      Строки начинаются с dataStartRow, столбцы, названные в numberColumns, становятся числами, а отсутствующая ячейка становится пустой строкой. Пример: name,age, затем John,30 -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: ParseToJsonDto

        Текст CSV, индексы строки заголовков и строки данных, разделители и числовые столбцы

      Returns T[]

      По одному объекту на строку данных

      const people = bitbybit.csv.parseToJson({ csv: "name,age\nJohn,30\nJane,25", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: ",", numberColumns: ["age"] });
      
    • Превращает текст CSV в список объектов с ключами из заданных вами headers, для файлов без строки заголовков; строка заголовков, которая в файле все же есть, пропускается установкой dataStartRow за нее.

      Столбцы, названные в numberColumns, становятся числами. Пример: John,30 с заголовками ["name", "age"] -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: ParseToJsonWithHeadersDto

        Текст CSV, имена заголовков, начальная строка данных, разделители и числовые столбцы

      Returns T[]

      По одному объекту на строку данных

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

    query

    • Перечисляет каждое значение одного столбца, находимого по имени заголовка, в порядке строк; строка без этой ячейки дает пустую строку.

      При asNumber равном true значения разбираются как числа. Пример: name,age, затем John,30 и Jane,25, столбец name -> ["John", "Jane"].

      Parameters

      • inputs: QueryColumnDto

        Текст CSV, имя столбца, индексы строки заголовков и строки данных, разделители и числовой флаг

      Returns (string | number)[]

      Значения столбца, сверху вниз

      const ages = bitbybit.csv.queryColumn({ csv: "name,age\nJohn,30\nJane,25", column: "age", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: ",", asNumber: true });
      
    • Оставляет только строки, ячейка которых в column равна value, давая их как объекты с ключами из заголовков.

      Сравнение текстовое, если столбец не перечислен в numberColumns, в этом случае обе стороны сравниваются как числа. Пример: столбец age, значение 30 -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: QueryRowsByValueDto

        Текст CSV, имя столбца, значение, индексы строк, разделители и числовые столбцы

      Returns T[]

      Подходящие строки как объекты

      const thirty = bitbybit.csv.queryRowsByValue({ csv: "name,age\nJohn,30\nJane,25", column: "age", value: "30", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: "," });
      
    • Читает ячейки строки headerRow как имена заголовков; индекс строки за концом выбрасывает ошибку.

      Пример: name,age, затем John,30 -> ["name", "age"].

      Parameters

      • inputs: GetHeadersDto

        Текст CSV, индекс строки заголовков и разделители

      Returns string[]

      Имена заголовков в порядке столбцов

      const headers = bitbybit.csv.getHeaders({ csv: "name,age\nJohn,30", headerRow: 0, rowSeparator: "\n", columnSeparator: "," });
      
    • Считает строки данных: все непустые строки минус те, что до dataStartRow, или минус одна строка заголовков, когда hasHeaders равно true, а dataStartRow опущен.

      Пример: name,age, John,30, Jane,25 с заголовками -> 2.

      Parameters

      • inputs: GetRowCountDto

        Текст CSV, флаг заголовка, необязательная начальная строка данных и разделители

      Returns number

      Число строк данных

      const count = bitbybit.csv.getRowCount({ csv: "name,age\nJohn,30\nJane,25", hasHeaders: true, rowSeparator: "\n", columnSeparator: "," });
      
    • Считает ячейки первой непустой строки, что и есть число столбцов; пустой текст дает 0.

      Пример: name,age,city, затем John,30,NYC -> 3.

      Parameters

      Returns number

      Число столбцов

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