你从会计工具导出销售报告,得到两个选项:下载为 CSV 或 XLSX。你选了一个,打开后,发现有些不对劲 — 公式不见了,重音字符变成乱码,或日期在欧式和美式格式之间摇摆。这是电子表格格式的日常现实,XLSX 和 CSV 之间的选择很少像看起来那么明显。
两种格式都存储表格数据,但它们是为不同的工作而设计的。理解每种格式保留了什么 — 以及它默默丢弃了什么 — 可以节省你数小时的调试时间和大量挫败感。
CSV 究竟是什么
CSV 代表 Comma-Separated Values(逗号分隔值)。它是仍在广泛使用中最古老、最简单的表格格式,可以追溯到 1970 年代的大型机数据交换。
CSV 文件是纯文本文件。每行是一行,行内的值由分隔符分隔 — 通常是逗号,有时是分号、制表符或竖线。没有格式、没有公式、没有样式,也没有多工作表概念。只有文本的行和列。
这种简单性是 CSV 的超能力。任何处理表格数据的工具 — 从 50 年前的 COBOL 程序到现代 Python 脚本 — 都能读取 CSV。没有专有解析器、没有版本兼容性、没有许可证。在文本编辑器中打开就能阅读。
XLSX 究竟是什么
XLSX 是 Office Open XML Spreadsheet 格式,由 Microsoft 在 2007 年推出,以替代旧的二进制 .xls 格式。尽管起源于 Microsoft,XLSX 是一个开放的 ISO 标准(ISO/IEC 29500),大多数现代电子表格应用程序原生支持。XLSX 文件不是单一文件 — 它是一个包含数十个 XML 文档的 ZIP 存档。里面你会找到:
- 单元格数据和公式
- 格式(字体、颜色、边框、数字格式)
- 多个工作表,每个有自己的网格
- 图表、数据透视表、命名范围、条件格式
- 嵌入图像甚至宏
你可以将 .xlsx 文件重命名为 .zip,解压并自己检查 XML。这使 XLSX 既丰富又可检查。
诚实的比较
| 功能 | CSV | XLSX |
|---|---|---|
| 存储简单值 | ✅ | ✅ |
| 保留公式 | ❌ | ✅ |
| 保留格式 | ❌ | ✅ |
| 多个工作表 | ❌ | ✅ |
| 图表和数据透视表 | ❌ | ✅ |
| 数字格式(货币、日期) | ❌ (仅文本) | ✅ |
| 通用兼容性 | ✅ | ✅ (现代应用) |
| 可在文本编辑器中读取 | ✅ | ❌ (是 ZIP) |
| 简单数据的大小 | 最小 | 5-10× 更大 |
| 区域设置问题风险 | 高 | 低 |
| 大文件流式处理 | ✅ | ⚠️ (必须先解压) |
什么时候 CSV 是正确答案
需要这些属性中的任何一个时使用 CSV:
- 最大兼容性。 导入数据库、提供给脚本、发送给工具未知的合作伙伴 — CSV 在任何地方都能工作。
- 海量数据集。 一百万行 CSV 流式处理良好;一百万行 XLSX 可能达到内存限制并触及 Excel 每张表 1,048,576 行的硬上限。
- 版本控制。 CSV 在 Git 中干净地差异化。XLSX 显示为二进制 blob。
- 纯数据交换。 当你只需要值,接收系统将应用自己的格式时。
什么时候 XLSX 是正确答案
当以下任何一项重要时切换到 XLSX:
- 公式必须保留。 带有
=SUM(B2:B30)的预算在 CSV 中变成静态数字。 - 多个工作表。 每月一张表的月度跟踪器在 CSV 中坍塌为单张表。
- 格式承载意义。 粗体总计、颜色编码类别、货币符号、百分比格式 — 在 CSV 中全部丢失。
- 类型安全的日期和数字。 XLSX 将
2026-05-02存储为日期类型。CSV 将其存储为文本,下一个工具决定如何解释(通常错误)。 - 收件人是人类。 人类阅读 XLSX 文件。程序读取 CSV。
抓住所有人的陷阱
一些特定问题反复咬伤用户:
区域设置逗号陷阱 在法语、德语和许多其他区域设置中,小数分隔符是逗号,不是句点。所以 1,5 表示 1.5。但 CSV 使用逗号作为字段分隔符。这些区域设置的 Excel 改用分号保存 CSV — 然后在导入到期望逗号的工具时会出错。结果:错误列的数字,或整行合并。
日期格式陷阱 带有 03/04/2026 的 CSV 是模糊的。是 4 月 3 日还是 3 月 4 日?Excel 根据区域设置自动解释,有时默默重写日期。XLSX 将日期存储为带有显式类型元数据的数字(自 1900 年以来的天数),消除了模糊性。
前导零陷阱 以 0 开头的电话号码、邮政编码或产品 SKU 在 XLSX 中作为文本存活。在 CSV 中,在 Excel 中重新打开时,它被解析为数字,前导零消失。永远。
编码陷阱 在 Windows 上以 ANSI 导出的 CSV 看起来很好,直到带有 é 的法语名称或日语文件名出现。如果 Excel 将重新打开,始终以 UTF-8 with BOM 导出 CSV,如果脚本消费它,则以 UTF-8 普通方式导出。
实用的经验法则
使用这个简单测试:
- 人类会打开它吗? → XLSX
- 程序或管道会消费它吗? → CSV
- 有公式、多个工作表或格式吗? → XLSX
- 它要去数据库、API 或工具未知的合作伙伴吗? → CSV
- 文件大于 100 MB 或 500,000 行吗? → CSV
如有疑问,将主版本保存为 XLSX,需要时导出为 CSV。反方向 — 在 CSV 中构建丰富格式并尝试升级到 XLSX — 会失去每种格式的优势。
更进一步
如果你每天使用电子表格,两个简短的教程涵盖了浏览器中的常见工作流:
- 如何在线编辑 XLSX 表格而无需 Excel — 无需 Excel 即可打开、编辑、运行公式和导出。
- 如何在 JSON、YAML 和 CSV 之间转换 — 在常见格式之间往返数据而不丢失结构。
两者都完全在浏览器中运行,永远不会将你的文件上传到任何服务器。
