如何在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
相关产品推荐
相关产品推荐

