Bitbybit Docs
    Preparing search index...

    Class CSVBitByBit

    读写 CSV,即每行一条记录、单元格之间用分隔符隔开的纯文本表格格式。解析器按 rowSeparatorcolumnSeparator 拆分,支持内含双写引号的双引号单元格,跳过空行,并将写成两个字符的 \n\t\r 读作真正的控制字符;写入器会为包含分隔符、引号或换行的单元格加上引号。

    Index

    Constructors

    generate

    • 将行列表(每行是单元格列表)写为 CSV 文本;包含分隔符、引号或换行的单元格用双引号包裹。

      示例:[["name", "age"], ["John", "30"]] -> 两行 name,ageJohn,30

      Parameters

      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,ageJohn,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,ageJohn,30

      Type Parameters

      • T = Record<string, unknown>

      Parameters

      Returns string

      CSV 文本

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

    parse

    • 将 CSV 文本拆分为行列表,每行是单元格字符串的列表;不转换为数值。

      跳过空行,单元格随其所在行一起去除首尾空白,双引号包裹的单元格可以包含分隔符和成对的引号。示例:两行 a,b,c1,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

      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,30Jane,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

      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

      Returns string[]

      按列顺序排列的表头名称

      const headers = bitbybit.csv.getHeaders({ csv: "name,age\nJohn,30", headerRow: 0, rowSeparator: "\n", columnSeparator: "," });
      
    • 统计数据行:所有非空行减去 dataStartRow 之前的行,或当 hasHeaders 为 true 且省略 dataStartRow 时减去一个表头行。

      示例:name,ageJohn,30Jane,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: "," });