数据与表格

Excel 转 CSV 或 JSON

打开 .xlsx 工作簿,选一个工作表,下载为 CSV 或 JSON。文件在你的浏览器里读取,Excel 的日期序列号会还原成真正的日期,空单元格也不会让后面的列错位。

把 .xlsx 文件拖到这里支持 Excel 2007 及以后的格式(.xlsx、.xlsm),文件不会离开你的设备。

全部在你的浏览器里运行,这里输入的内容不会上传。

怎么用

  1. 把 .xlsx 文件拖到框里,或者点选择文件。
  2. 选择要导出的工作表,每个工作表后面标着它的行数。
  3. 选择 CSV 或 JSON。选 CSV 时设置分隔符;如果之后还要用 Excel 打开,保持勾选添加 BOM。选 JSON 时说明第一行是不是列名,如果是,每一行会变成一个对象。
  4. 看一下预览,然后点下载,或者复制到剪贴板。

WPS 表格保存的 .xlsx 文件同样可以读取,它使用的是同一种标准格式。

工作簿是怎么读取的

.xlsx 文件其实是一个装着多个 XML 文件的 ZIP 压缩包,格式标准叫 Office Open XML(ECMA-376)。工作簿文件列出所有工作表,每个工作表是一份由行和单元格组成的 XML,文字通常只在「共享字符串表」里存一次,单元格里只记编号。本页在浏览器里解开压缩包,解压需要的部分,读出单元格的值,不向服务器发送任何内容。对于满是客户信息、工资或账目的表格,这一点很重要。

日期其实是数字

Excel 把日期存成「从 1899 年底起经过的天数」,只是因为单元格设了日期格式,才显示成日期。不看格式的转换工具,会在 CSV 里写出 45000,而表格里明明显示的是 2023 年 3 月 15 日。本工具会检查每个单元格的数字格式,包括内置的日期格式,以及含有年、月、日或时间代码的自定义格式(比如「yyyy年m月d日」),把这些单元格写成 2023-03-15 这样的 ISO 日期;格式里有时间时,写成 2023-03-15 18:00。

有两个历史遗留问题也做了处理。Excel 把 1900 年当作闰年,这是从 Lotus 1-2-3 继承下来的错误,所以序列号 60 是不存在的 1900 年 2 月 29 日,之后的序列号都要少算一天。使用 1904 日期系统(旧版 Mac Excel 的默认设置)的工作簿,从 1904 年 1 月 1 日开始计数,本工具会从工作簿设置里读出这一点。

其他单元格类型

  • 共享字符串表里的文字,包括混合了多种格式的富文本,会合并成纯文字。
  • 内联字符串、布尔值(TRUE/FALSE),以及 #N/A 这类错误值(按文字写出)。
  • 公式:使用 Excel 上次计算并保存下来的结果,不会重新计算公式。
  • 空单元格和缺失的行写成空字段,所以 C 列的值始终在 C 列。

示例

单元格里存的Excel 显示导出为
45000,日期格式2023/3/152023-03-15
45000.75,格式 yyyy-mm-dd hh:mm2023-03-15 18:002023-03-15 18:00
1234.5,格式 #,##0.001,234.501234.5
公式 =D2*2,上次计算结果 246924692469
TRUETRUEtrue
1904 日期系统中的 450002027/3/162027-03-16

数字导出时不带显示格式,千分位、货币符号、固定小数位都属于显示效果,不是数据本身。如果需要和屏幕上一模一样的文字,请先在 Excel 里把这些单元格设成文本格式再转换。身份证号、银行卡号这类长数字,最好在录入时就设为文本,否则 Excel 本身就会把后几位变成 0。

局限

  • 只支持 .xlsx。 旧版二进制 .xls 和 .xlsb 不支持,请先另存为 .xlsx。CSV 文件请用「CSV 与 JSON 互转」。
  • 设了打开密码的工作簿是加密的,需要先在 Excel 里取消密码。
  • 合并单元格只有左上角的格子有值,其余格子为空,这和 Excel 自己导出 CSV 的结果一致。
  • 公式不会重新计算。 如果文件保存时没有存计算结果(有些程序生成的文件会这样),公式单元格会是空的。
  • 特别大的工作表(几十万行)可以处理,但需要几秒钟和较多内存;预览只显示前 100 行。

常见问题

表格会被上传吗?

不会。.xlsx 在你的浏览器里解压和读取,CSV 或 JSON 也是在你的设备上生成的。

为什么别的工具导出的日期变成了数字?

Excel 把日期存成天数,只是显示成日期。本工具会读取单元格的数字格式,把日期单元格转换成 2023-03-15 这样的日期。

能一次导出所有工作表吗?

请逐个选择工作表下载。CSV 只能装一张表,所以每个工作表对应一个文件。

支持 .xls 吗?

不支持旧版 Excel 97–2003 格式。请用 Excel、WPS 或 LibreOffice 打开后另存为 .xlsx。

导出的 CSV 用 Excel 打开是乱码?

保持勾选「添加 BOM」。没有 BOM 时,中文版 Excel 会按 GBK 去读 UTF-8 文件,于是出现乱码。

参考资料

用到这个工具的指南

↵ 打开 · Esc 关闭