Bitbybit Docs
    Preparing search index...

    Class CSVBitByBit

    Ler e escrever CSV, o formato de tabela em texto simples com uma linha por linha de texto e um separador entre células. Os analisadores dividem por rowSeparator e columnSeparator, respeitam células entre aspas duplas com aspas duplicadas no interior, saltam linhas em branco e leem \n, \t e \r escritos como dois carateres como o caráter real; os escritores põem entre aspas uma célula que contenha um separador, uma aspa ou uma quebra de linha.

    Index

    Constructors

    generate

    • Escreve uma lista de linhas, cada uma uma lista de células, como texto CSV; uma célula que contenha um separador, aspas ou uma quebra de linha é envolvida em aspas duplas.

      Exemplo: [["name", "age"], ["John", "30"]] -> name,age e John,30 em duas linhas.

      Parameters

      Returns string

      O texto CSV

      const csv = bitbybit.csv.arrayToCsv({ array: [["x", "y", "z"], [1, 2, 3]], rowSeparator: "\n", columnSeparator: "," });
      
    • Escreve uma lista de objetos como texto CSV com as colunas que nomear em headers, por essa ordem; uma propriedade que um objeto não tenha torna-se uma célula vazia.

      Com includeHeaders verdadeiro a primeira linha contém os nomes de cabeçalho. Exemplo: [{ name: "John", age: "30" }] com cabeçalhos ["name", "age"] -> name,age e John,30.

      Type Parameters

      • T = Record<string, unknown>

      Parameters

      • inputs: JsonToCsvDto<T>

        Os objetos, os nomes das colunas, o indicador de cabeçalho e os separadores

      Returns string

      O texto CSV

      const csv = bitbybit.csv.jsonToCsv({ json: people, headers: ["name", "age"], includeHeaders: true, rowSeparator: "\n", columnSeparator: "," });
      
    • Escreve uma lista de objetos como texto CSV usando os nomes de propriedade do primeiro objeto como as colunas, pela sua ordem; uma lista vazia dá texto vazio.

      Exemplo: [{ name: "John", age: "30" }] -> name,age e John,30.

      Type Parameters

      • T = Record<string, unknown>

      Parameters

      Returns string

      O texto CSV

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

    parse

    • Divide texto CSV numa lista de linhas, cada uma uma lista de strings de células; nada é convertido em números.

      As linhas em branco são saltadas, as células são aparadas com a sua linha, e uma célula entre aspas duplas pode conter o separador e aspas duplicadas. Exemplo: a,b,c e 1,2,3 em duas linhas -> [["a", "b", "c"], ["1", "2", "3"]].

      Parameters

      Returns string[][]

      As linhas como listas de strings de células

      const rows = bitbybit.csv.parseToArray({ csv: "x,y,z\n1,2,3\n4,5,6", rowSeparator: "\n", columnSeparator: "," });
      
    • Transforma texto CSV numa lista de objetos, um por linha de dados, com chaves dos nomes de cabeçalho da linha headerRow.

      As linhas começam em dataStartRow, as colunas nomeadas em numberColumns tornam-se números e uma célula em falta torna-se uma string vazia. Exemplo: name,age depois John,30 -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: ParseToJsonDto

        O texto CSV, os índices das linhas de cabeçalho e de dados, os separadores e as colunas numéricas

      Returns T[]

      Um objeto por linha de dados

      const people = bitbybit.csv.parseToJson({ csv: "name,age\nJohn,30\nJane,25", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: ",", numberColumns: ["age"] });
      
    • Transforma texto CSV numa lista de objetos com as chaves dos headers que der, para ficheiros sem linha de cabeçalho; uma linha de cabeçalho que o ficheiro tenha é saltada definindo dataStartRow para lá dela.

      As colunas nomeadas em numberColumns tornam-se números. Exemplo: John,30 com cabeçalhos ["name", "age"] -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: ParseToJsonWithHeadersDto

        O texto CSV, os nomes dos cabeçalhos, a linha de início dos dados, os separadores e as colunas numéricas

      Returns T[]

      Um objeto por linha de dados

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

    query

    • Lista todos os valores de uma coluna, encontrada pelo seu nome de cabeçalho, pela ordem das linhas; uma linha sem essa célula dá uma string vazia.

      Com asNumber verdadeiro os valores são analisados como números. Exemplo: name,age depois John,30 e Jane,25, coluna name -> ["John", "Jane"].

      Parameters

      • inputs: QueryColumnDto

        O texto CSV, o nome da coluna, os índices das linhas de cabeçalho e de dados, os separadores e o indicador numérico

      Returns (string | number)[]

      Os valores da coluna, de cima para baixo

      const ages = bitbybit.csv.queryColumn({ csv: "name,age\nJohn,30\nJane,25", column: "age", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: ",", asNumber: true });
      
    • Mantém só as linhas cuja célula em column é igual a value, dando-as como objetos com as chaves dos cabeçalhos.

      A comparação é feita sobre texto a menos que a coluna esteja listada em numberColumns, caso em que ambos os lados são comparados como números. Exemplo: coluna age, valor 30 -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: QueryRowsByValueDto

        O texto CSV, o nome da coluna, o valor, os índices das linhas, os separadores e as colunas numéricas

      Returns T[]

      As linhas correspondentes como objetos

      const thirty = bitbybit.csv.queryRowsByValue({ csv: "name,age\nJohn,30\nJane,25", column: "age", value: "30", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: "," });
      
    • Lê as células da linha headerRow como os nomes de cabeçalho; um índice de linha para lá do fim lança um erro.

      Exemplo: name,age depois John,30 -> ["name", "age"].

      Parameters

      • inputs: GetHeadersDto

        O texto CSV, o índice da linha de cabeçalho e os separadores

      Returns string[]

      Os nomes dos cabeçalhos pela ordem das colunas

      const headers = bitbybit.csv.getHeaders({ csv: "name,age\nJohn,30", headerRow: 0, rowSeparator: "\n", columnSeparator: "," });
      
    • Conta as linhas de dados: todas as linhas não vazias menos as anteriores a dataStartRow, ou menos uma linha de cabeçalho quando hasHeaders é verdadeiro e dataStartRow é omitido.

      Exemplo: name,age, John,30, Jane,25 com cabeçalhos -> 2.

      Parameters

      • inputs: GetRowCountDto

        O texto CSV, o indicador de cabeçalho, a linha de início dos dados opcional e os separadores

      Returns number

      O número de linhas de dados

      const count = bitbybit.csv.getRowCount({ csv: "name,age\nJohn,30\nJane,25", hasHeaders: true, rowSeparator: "\n", columnSeparator: "," });
      
    • Conta as células da primeira linha não vazia, que é o número de colunas; texto vazio dá 0.

      Exemplo: name,age,city depois John,30,NYC -> 3.

      Parameters

      Returns number

      O número de colunas

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