表格数据导出格式速查表

同一张表导出成不同格式,差别不只是后缀名:有的保留数据类型,有的只剩字符串,有的能被 Excel 直接打开,有的更适合程序读取。本页对照四种常见导出格式的取舍,并把最容易出错的 CSV 转义规则逐条列出。

四种导出格式对照

格式结构类型保留适用场景常见坑
JSON对象数组,键为表头保留数字、布尔、null接口联调、前端渲染、配置导入表头重复会覆盖;合并单元格会丢结构
CSV纯文本表格,逗号分隔全部退化为字符串数据库导入、Excel 打开、跨平台交换无类型、无编码声明,中文常乱码
HTMLtable / tr / td 标签保留文本与合并结构网页嵌入、邮件正文、富文本粘贴体积大,数值仍为文本
纯文本制表符或竖线分隔全部为字符串日志、终端粘贴、Markdown 表格含分隔符的字段需转义,否则列错位

CSV 转义规则对照

字段里只要出现逗号、换行或双引号,就必须用双引号包裹;字段内部的双引号写成两个连续双引号。

情况原始值CSV 中的写法说明
普通字段appleapple原样输出
含逗号a,b"a,b"必须用双引号包裹
含换行line1 line2"line1 line2"引号内可保留换行
含双引号say "hi""say ""hi"""内部引号写成两个
首尾空格 pad " pad "加引号以保留空格

常见问题

CSV 到底该用逗号还是制表符分隔?

看数据内容。逗号是 RFC 4180 的标准,兼容性最好,但如果数据里本身就含逗号(地址、金额、人名很常见),就必须给字段加双引号转义,处理不当会导致列错位。制表符分隔的 TSV 在文本里出现概率低得多,适合数据含逗号多的场景,代价是不是所有工具都默认识别。稳妥做法:优先用逗号并严格做引号转义;如果下游是自己控制的程序,改用 TSV 能省掉大量转义麻烦。

Excel 打开 CSV 中文为什么乱码?

因为 CSV 本身不声明编码,Excel 会按系统默认编码去猜。在中文 Windows 上默认是 GBK,而多数程序导出的 CSV 是 UTF-8,两者不一致就乱码。三种解法:导出时带 UTF-8 BOM,Excel 见到 BOM 就会按 UTF-8 解析,这是最省事的做法;或者让下游改用「数据 → 从文本导入」并手动指定 UTF-8;再或者把文件另存为 GBK,但会牺牲其他平台的兼容性。

日期导出后变成一串数字怎么办?

这是 Excel 的存储机制导致的:日期在内部就是一个从 1900-01-01 起算的序列号,显示成什么样完全取决于单元格格式。导出 CSV 时格式信息会丢失,只剩下序列号。解法是在导出前把日期列设置成文本格式,或者用 TEXT 函数先转成 yyyy-mm-dd 这样的字符串;如果导出 JSON,则要在工具侧识别日期格式并输出 ISO 8601 字符串,而不是原样取内部数值。

大表格导出很卡甚至失败,怎么处理?

瓶颈通常在浏览器内存而不是计算本身。一个 10 万行的表在解析成对象数组后,内存占用可能是原始文件的几倍,加上字符串拼接很容易触顶。实用做法:先按业务需要裁剪列和行,不要全量导出;超过几万行时改用服务端脚本处理;如果只是要给下游程序用,优先选 CSV 而不是 JSON 或 HTML,前者的内存开销和体积都小一个量级。