JavaScript生成TSV文件,如何设置分隔符让Excel识别多列?
解决Excel打开TSV文件内容全在一列的问题
问题根源
Excel的分隔符识别逻辑和系统区域设置绑定,部分地区默认不会把制表符(\t)当成列分隔符,所以直接双击打开TSV时会把所有内容塞进同一列。
快速临时解决(不用改代码)
别直接双击打开文件,用Excel的导入功能:
- 打开Excel,切换到「数据」选项卡
- 点击「自文本/CSV」(不同版本名称可能略有差异)
- 选中你的
outputDoc.tsv文件,在导入向导里选择「制表符」作为分隔符,完成导入即可正常分列。
代码层面彻底解决
在TSV内容开头添加sep=\t声明,强制Excel用制表符作为分隔符,同时修正代码里的笔误,修改后的代码如下:
try{ const tsvString = [ [ "header1", "header2" ], ...kvObjs.map(item => [ item.field1, item.field2 // 修正笔误:原代码是fiedl2,少了字母d ]) ] .map(e => e.join("\t")) .join("\n"); // 在UTF-8 BOM前添加sep=\t声明,强制Excel识别制表符为分隔符 var tsvContent = "sep=\t\n\ufeff"+tsvString; fs.writeFileSync("/document/outputDoc.tsv", tsvContent); } catch (err){ winston.error(`Error outputDocFile :: ${err}`); }
内容的提问来源于stack exchange,提问作者Priya
相关产品推荐
相关产品推荐

