XLSX 转 CSV 转换器

拖放 Excel 工作簿,将每个工作表导出为 CSV — 单独或一起作为 .zip。在浏览器中运行 — 无需上传。

将电子表格拖到这里
  1. 将 XLSX(或 XLS / XLSM / ODS)拖入或点击「浏览选择」。
  2. 从下拉框选择一个工作表。
  3. 单个工作表点「转换并下载」,整本工作簿点「所有工作表 .zip」。
  4. 输出是 RFC 4180 CSV — UTF-8、逗号分隔,需要时使用双引号转义。
它能做什么?

通过 SheetJS(Apache-2.0 分支)读取 Excel 与 OpenDocument 电子表格,使用 SheetJS 的 sheet_to_csv 把每个工作表输出为 CSV。单元格值按工作簿原生类型转为文本 — 数字保持为数字,日期按工作簿显示格式渲染,公式使用其缓存的计算值。图表、图片、条件格式无法表达,因而被丢弃。

常见陷阱

XLSX → CSV 多数情况下是机械操作,但少数模式会产生意外输出。

  • 日期格式。 Excel 把日期存为序列号;显示格式取决于单元格的数字格式。CSV 沿用 Excel 的渲染 — 可能是 `2026-04-26`、`4/26/2026` 或序列号。要强制 ISO 8601,请在导出前在 Excel 中调整单元格格式。
  • 公式结果 vs 公式。 CSV 不能表示公式。输出使用每个单元格上次保存时缓存的计算值。如果工作簿被修改但未重新保存,缓存值可能过期。
  • 合并单元格。 合并单元格只在合并区域左上角输出值,其它合并位置变为空。这是 SheetJS 默认行为,也是大多数 CSV 消费者期望的方式。
  • 数字 vs 文本。 除非显式将单元格类型设为「文本」,Excel 会把 `00123` 存为数字 123。CSV 反映底层类型。要保留前导零,请在导出前在 Excel 中将单元格格式设为「文本」。
  • 加密的 XLSX。 SheetJS Community 不解密受密码保护的 XLSX。请在 Excel 打开文件、移除保护、保存,然后再次拖入。
  • 非常大的工作簿。 约 50 MB 以上的工作簿解析会明显慢,并可能压力浏览器内存。建议拆分成更小文件,或对大型任务在命令行使用 SheetJS。
常见问题

为什么第一次转换很慢?

SheetJS 压缩后约 190 KB,在第一次选择文件时加载。同一会话内的后续转换会复用已缓存的模块,几乎是即时的。

支持旧版 XLS 文件吗?

支持 — SheetJS Community 可解析 .xls(BIFF8)、.xlsx、.xlsm 与 .ods。这些格式的加密变体不受支持。

CSV 会使用我所在区域的小数分隔符吗?

不会 — 输出始终是 RFC 4180,使用 `.` 作为小数点、`,` 作为字段分隔符。要得到欧式 `;` 分隔的 CSV,请对结果做后处理。

我的工作簿会被上传吗?

不会。一切都在你的浏览器里运行 — 电子表格由本页 SheetJS 解析,从不发送到任何服务器。

公式如何导出?

CSV 不能表示公式。输出使用每个单元格的缓存计算值。如果你需要公式文本本身,那是另一种导出 — 在 Excel 中打开文件并单独复制公式列。

为什么 CSV 与我在 Excel 中看到的不完全一致?

Excel 的显示层会在原始值之上叠加数字格式、条件规则、区域设置。CSV 是纯文本,因此那部分视觉样式有意被舍弃。单元格内容会保留;单元格外观不会。