写入CSV文件时忽略逗号失效:已用双引号包裹仍无效
问题根源:字段分隔符后的多余空格
你的CSV导出后带逗号的内容被拆分,核心原因是字段之间的分隔符包含了多余的空格。从你输出的日志可以看到,每个字段是用", "(引号+逗号+空格+引号)分隔的,比如:
"XXXXXXXXXX", "XXXXXXXX", "xOGvMn1ADS F5i1ZfDdQn9S4ejdS", "6", ...
这种格式不符合CSV的规范要求,大部分CSV解析器(包括Excel)会将逗号后的空格视为下一个字段的起始内容,同时错误地认为引号的包裹范围只到空格前,导致字段内部的逗号被当成新的分隔符,最终拆分单元格。
解决方案
移除分隔符后的空格:
将字段之间的连接符从,(逗号加空格)改为,(纯逗号)。比如如果你的csvMaker函数中是用join(', ')来拼接字段,直接替换成join(',')即可。修改后,正确的行格式应该是:
"XXXXXXXXXX","XXXXXXXX","xOGvMn1ADS F5i1ZfDdQn9S4ejdS","6",...保留正确的字段包裹逻辑:
你目前对字段的处理(用双引号包裹,同时将内部双引号转义为两个双引号)是符合CSV规范的,这部分可以保留:`"${subRows["r" + index].toString().replace(/"/g, '""')}"`
验证修改后的效果
修改后,包含逗号的字段(比如"egular theodolites x-ray. pending, regular dugouts...")会被解析器正确识别为单个单元格内容,不会因为内部的逗号而拆分。
内容的提问来源于stack exchange,提问作者MatTaNg
相关产品推荐
相关产品推荐

