Bitbybit Docs
    Preparing search index...

    Class CSVBitByBit

    Leer y escribir CSV, el formato de tabla en texto plano con una fila por línea y un separador entre celdas. Los analizadores dividen por rowSeparator y columnSeparator, respetan las celdas entre comillas dobles con comillas duplicadas dentro, omiten las líneas en blanco y leen \n, \t y \r escritos como dos caracteres como si fueran los reales; los escritores entrecomillan una celda que contiene un separador, una comilla o un salto de línea.

    Index

    Constructors

    generate

    • Escribe una lista de filas, cada una una lista de celdas, como texto CSV; una celda que contiene un separador, una comilla o un salto de línea se envuelve entre comillas dobles.

      Ejemplo: [["name", "age"], ["John", "30"]] -> name,age y John,30 en dos líneas.

      Parameters

      Returns string

      El texto CSV

      const csv = bitbybit.csv.arrayToCsv({ array: [["x", "y", "z"], [1, 2, 3]], rowSeparator: "\n", columnSeparator: "," });
      
    • Escribe una lista de objetos como texto CSV con las columnas que nombras en headers, en ese orden; una propiedad que a un objeto le falta se convierte en una celda vacía.

      Con includeHeaders en true la primera línea contiene los nombres de cabecera. Ejemplo: [{ name: "John", age: "30" }] con cabeceras ["name", "age"] -> name,age y John,30.

      Type Parameters

      • T = Record<string, unknown>

      Parameters

      • inputs: JsonToCsvDto<T>

        Los objetos, los nombres de las columnas, el indicador de cabecera y los separadores

      Returns string

      El texto CSV

      const csv = bitbybit.csv.jsonToCsv({ json: people, headers: ["name", "age"], includeHeaders: true, rowSeparator: "\n", columnSeparator: "," });
      
    • Escribe una lista de objetos como texto CSV usando los nombres de propiedad del primer objeto como las columnas, en su orden; una lista vacía da texto vacío.

      Ejemplo: [{ name: "John", age: "30" }] -> name,age y John,30.

      Type Parameters

      • T = Record<string, unknown>

      Parameters

      Returns string

      El texto CSV

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

    parse

    • Divide texto CSV en una lista de filas, cada una una lista de cadenas de celda; nada se convierte en números.

      Las líneas en blanco se saltan, las celdas se recortan con su línea, y una celda entre comillas dobles puede contener el separador y comillas duplicadas. Ejemplo: a,b,c y 1,2,3 en dos líneas -> [["a", "b", "c"], ["1", "2", "3"]].

      Parameters

      Returns string[][]

      Las filas como listas de cadenas de celda

      const rows = bitbybit.csv.parseToArray({ csv: "x,y,z\n1,2,3\n4,5,6", rowSeparator: "\n", columnSeparator: "," });
      
    • Convierte texto CSV en una lista de objetos, uno por fila de datos, con las claves de los nombres de cabecera de la fila headerRow.

      Las filas empiezan en dataStartRow, las columnas nombradas en numberColumns se convierten en números y una celda que falta se convierte en una cadena vacía. Ejemplo: name,age y luego John,30 -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: ParseToJsonDto

        El texto CSV, los índices de la fila de cabecera y de datos, los separadores y las columnas numéricas

      Returns T[]

      Un objeto por fila de datos

      const people = bitbybit.csv.parseToJson({ csv: "name,age\nJohn,30\nJane,25", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: ",", numberColumns: ["age"] });
      
    • Convierte texto CSV en una lista de objetos con las claves de los headers que das, para archivos sin línea de cabecera; una línea de cabecera que el archivo sí tiene se salta poniendo dataStartRow más allá de ella.

      Las columnas nombradas en numberColumns se convierten en números. Ejemplo: John,30 con cabeceras ["name", "age"] -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: ParseToJsonWithHeadersDto

        El texto CSV, los nombres de cabecera, la fila de inicio de los datos, los separadores y las columnas numéricas

      Returns T[]

      Un objeto por fila de datos

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

    query

    • Lista cada valor de una columna, encontrada por su nombre de cabecera, en el orden de las filas; una fila sin esa celda da una cadena vacía.

      Con asNumber en true los valores se analizan como números. Ejemplo: name,age y luego John,30 y Jane,25, columna name -> ["John", "Jane"].

      Parameters

      • inputs: QueryColumnDto

        El texto CSV, el nombre de la columna, los índices de la fila de cabecera y de datos, los separadores y el indicador numérico

      Returns (string | number)[]

      Los valores de la columna, de arriba abajo

      const ages = bitbybit.csv.queryColumn({ csv: "name,age\nJohn,30\nJane,25", column: "age", headerRow: 0, dataStartRow: 1, rowSeparator: "\n", columnSeparator: ",", asNumber: true });
      
    • Conserva solo las filas cuya celda en column es igual a value, dándolas como objetos con las claves de las cabeceras.

      La comparación es sobre texto salvo que la columna esté listada en numberColumns, en cuyo caso ambos lados se comparan como números. Ejemplo: columna age, valor 30 -> [{ name: "John", age: "30" }].

      Type Parameters

      • T = Record<string, string | number>

      Parameters

      • inputs: QueryRowsByValueDto

        El texto CSV, el nombre de la columna, el valor, los índices de fila, los separadores y las columnas numéricas

      Returns T[]

      Las filas coincidentes 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: "," });
      
    • Lee las celdas de la fila headerRow como los nombres de cabecera; un índice de fila más allá del final lanza un error.

      Ejemplo: name,age y luego John,30 -> ["name", "age"].

      Parameters

      • inputs: GetHeadersDto

        El texto CSV, el índice de la fila de cabecera y los separadores

      Returns string[]

      Los nombres de cabecera en orden de columnas

      const headers = bitbybit.csv.getHeaders({ csv: "name,age\nJohn,30", headerRow: 0, rowSeparator: "\n", columnSeparator: "," });
      
    • Cuenta las filas de datos: todas las líneas no vacías menos las anteriores a dataStartRow, o menos una línea de cabecera cuando hasHeaders es true y dataStartRow se omite.

      Ejemplo: name,age, John,30, Jane,25 con cabeceras -> 2.

      Parameters

      • inputs: GetRowCountDto

        El texto CSV, el indicador de cabecera, la fila de inicio de los datos opcional y los separadores

      Returns number

      El número de filas de datos

      const count = bitbybit.csv.getRowCount({ csv: "name,age\nJohn,30\nJane,25", hasHeaders: true, rowSeparator: "\n", columnSeparator: "," });
      
    • Cuenta las celdas de la primera fila no vacía, que es el número de columnas; un texto vacío da 0.

      Ejemplo: name,age,city y luego John,30,NYC -> 3.

      Parameters

      Returns number

      El número de columnas

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