什么是 Excel 转 CSV 工具
这个页面把一个 XLSX 文件转换成纯文本的 CSV 文件。上传一个 Excel 文件后,工具只读取第一个工作表中的可见值,让你选择分隔符(逗号、分号或制表符),然后生成可下载的 CSV。整个转换在浏览器内完成,数据不会离开你的机器。
与同类工具不同,这个转换是一个彻底的有损压缩。XLSX 是一个压缩的 XML 工作簿,可以包含多个工作表、公式、单元格类型(数字、日期、布尔值)、颜色、字体和合并单元格。CSV 只允许一行行的文本,用分隔符隔开列。工具用最后保存的计算值替换每个公式,丢弃所有格式,只处理第一个工作表。嵌入的逗号、换行符和前导零如果处理不当会破坏输出——工具会自动添加引号,但你应该检查结果。因为 CSV 没有嵌套数据结构的概念,你必须在转换前决定如何表示任何层次化字段(例如用拼接字符串或单独列)。
XLSX 与 CSV 的核心差异
XLSX 是一个工业标准的电子表格格式(基于 Open XML),内部是多个 XML 文件的 ZIP 包。它明确区分元数据、公式、格式和值。CSV(逗号分隔值)没有正式标准,RFC 4180 只给出一个常用约定:纯文本,用换行符分隔记录,用逗号(或自定义分隔符)分隔字段。
- 工作表数量:XLSX 可以任意多个;本工具只转换第一个工作表,忽略其他所有工作表。
- 公式:XLSX 存储公式文本和可选择的计算结果;本工具读取最近保存的可见值,不重新计算。
- 单元格类型:XLSX 标记数字、日期、货币、文本等;CSV 全部变成字符串。数字的精度、日期格式(例如 2025-01-30 变为 45676)、货币符号全部丢失。
- 格式:加粗、颜色、边框、合并单元格不复存在。合并单元格中的值通常只保留左上角单元格,其他变为空字符串。
- 嵌套数据:如果 Excel 中有分组、子表或合并项(例如“姓名”下含两个“电话”字段),CSV 无法直接表达。你必须预先将这些扁平化为同一行的多个列或一个拼接字段。
输入与输出细节
输入:一个 XLSX 文件。输出格式固定为 CSV。用户选择分隔符:逗号(,)、分号(;)或制表符(\t)。
输出:一个下载的 CSV 文件。页面上显示转换后的表格预览。同时显示三项统计:
- 行数(转换后的行数)
- 列数(转换后的列数)
- 输出文件大小
这些信息在预览区下方直接可见。
必须了解的关键边缘情况
1. 前导零丢失
如果 Excel 单元格包含一个数值(例如 00123),工具会将其作为数字读入。CSV 输出为 123。如果前导零必须保留,原始 XLSX 中的单元格必须存储为文本格式(单元格左上角绿色三角标记)。工具直接读取存储的值,数字类型会被解释为数值。
2. 嵌入逗号、换行符与引号规则
如果选择了逗号作为分隔符,而单元格内容包含逗号,工具会自动用双引号包裹整个字段。同理,包含换行符的单元也会被引号包裹。如果内容本身包含双引号,标准做法是将其重复("")。工具的引用逻辑遵循 RFC 4180。但某些接收系统对引号的处理可能不同,转换后最好用文本编辑器检查。
3. 公式仅保留最后计算值
工具不会重新计算公式。如果 Excel 文件中的公式依赖其他未保存的宏或外部链接,最后一次保存时 Excel 的计算结果如果已经缓存,则正常;否则可能看到错误值(例如 #REF!)被原样写入 CSV。
4. 仅第一个工作表
多工作表 Excel 中,只有第一个工作表被处理。如果你想转换其他工作表,必须先将它们复制到第一个工作表,或者单独保存后分别上传。
5. 嵌套数据必须预扁平化
工具不会猜测怎么展平嵌套。例如:
| 部门 | 员工 |
|------|--------|
| 研发 | 张三 |
| | 李四 |
在 CSV 中应该变成:
部门,员工
研发,张三
研发,李四
如果你保留原样,CSV 的第二行第一列会是空字符串,导致数据错位。
常见的错误消息与含义
当上传 XLSX 文件时,可能弹出以下错误:
| 错误消息(原文翻译) | 原因与处理 |
|---|---|
| “请先选择一个文件。” | 没有选择文件就点击转换按钮。 |
| “请选择 CSV、JSON 或 XLSX 文件。” | 上传了其他格式(如 PDF、XLS)。 |
| “文件过大,请使用小于 8 MB 的文件。” | 上传的 XLSX 超过 8 MB 的文件大小上限。 |
| “无法打开此 Excel 文件。” | 文件损坏、非标准 XLSX(例如 XLS 旧格式)或密码保护。工具仅支持 .xlsx。 |
| “该文件没有表格行。” | 第一个工作表为空或所有行都是空白。 |
| “表格行数超过上限。” | 第一个工作表有超过 10,000 行。 |
| “表格列数超过上限。” | 第一个工作表有超过 200 列。 |
| “转换已取消。” | 用户中途取消。 |
| “转换耗时过长,请尝试较小的文件。” | 转换运行时间超过约 12 秒的限制。 |
常见问题(FAQ)
Q: 为什么转换后日期变成了数字?
A: Excel 内部将日期存储为序列数(例如 2025-01-30 对应 45676)。CSV 没有日期类型,序列数被原样写入。如果接收系统需要日期字符串,你必须在 Excel 中将该列格式化为文本(例如用 TEXT(A1,"YYYY-MM-DD") 公式)保存后再上传。
Q: 只转换第一个工作表,我需要转换其他工作表怎么办?
A: 方法一:在 Excel 中将要转换的工作表复制到新工作簿的第一个位置。方法二:将该工作表另存为单独的文件再上传。
Q: 前导零丢失了,如何保留?
A: 在 Excel 中将要保留前导零的列设为“文本”格式,重新输入数值(如 '00123),保存后再上传。工具读取文本形式的值就不会丢失零。
Q: 为什么公式变成了固定值?
A: 工具只读取 XLSX 中保存的“最后计算值”,不再运行公式。如果你需要重新计算,请在 Excel 中手动重新计算并保存后,再上传文件。
Q: 我应该选逗号、分号还是制表符?
A: 通常逗号是默认标准。如果数据中大量包含逗号(例如地址“北京,朝阳区”),选分号或制表符可以避免引用混淆。检查你的目标系统要求:CSV 导入时常用逗号;某些欧洲系统使用分号;数据库导入可能接受制表符。如果不确定,先用逗号,然后在文本编辑器中查找逗号冲突。
Q: 文件在浏览器中处理,真的不会上传到服务器吗?
A: 是的。所有代码在浏览器本地运行。没有网络请求,数据完全不离开你的设备。这对于包含敏感信息的 Excel 文件尤其安全。
Q: 如何转换旧版 .xls 文件?
A: 此工具仅支持现代 .xlsx 格式。如果你有 .xls 文件(Excel 97–2003),请在最新版 Excel、LibreOffice 或 Google Sheets 中打开并另存为 .xlsx。然后上传新文件。