You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在SheetJS中配置制表符(\t)作为数据解析分隔符?

使用SheetJS将制表符分隔的字符串解析为JavaScript对象

问题描述

我正在使用SheetJS将数据解析为JavaScript对象,想要把API传入字符串的解析分隔符从默认的逗号(,)改为制表符(\t),能否通过ParsingOptions传入该配置?

现有代码片段

const spreadsheet = '91282CBH3\t-40,000,000\t5.01\r\n91282CBH3\t50,000,000\t5.1\r\n'
import xlsx from 'xlsx';
const type = 'string';
const workbook = xlsx.read(spreadsheet, { type });

SheetJS API定义

/** Attempts to parse data */
export function read(data: any, opts?: ParsingOptions): WorkBook;

当前错误解析结果

[
    {
        "A": "91282CBH3\t-40",
        "B": 0,
        "C": 36647
    },
    {
        "A": "91282CBH3\t50",
        "B": 0,
        "C": 36647
    }
]

期望解析结果

[
    {
        "A": "91282CBH3",
        "B": -40000000,
        "C": 5.01
    },
    {
        "A": "91282CBH3",
        "B": 50000000,
        "C": 5.1
    }
]

解决方案

完全可以通过ParsingOptions配置分隔符。SheetJS的read方法支持在配置项中指定delimiter参数,用来设置CSV类文本格式的字段分隔符。针对你的需求,只需将delimiter设为"\t"即可。

修改后的代码

const spreadsheet = '91282CBH3\t-40,000,000\t5.01\r\n91282CBH3\t50,000,000\t5.1\r\n'
import xlsx from 'xlsx';
const type = 'string';
// 配置制表符为分隔符
const workbook = xlsx.read(spreadsheet, { type, delimiter: "\t" });

// 将工作表转换为JavaScript对象数组
const worksheet = workbook.Sheets[workbook.SheetNames[0]];
const parsedData = xlsx.utils.sheet_to_json(worksheet);
console.log(parsedData);

说明

配置delimiter: "\t"后,解析器会以制表符作为每行字段的拆分依据,同时正确识别数值中的千位分隔逗号(比如-40,000,000会被转换为数值-40000000),最终得到符合预期的解析结果。

内容的提问来源于stack exchange,提问作者Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 15:47:38