怎么用
- 把 .xlsx 文件拖到框里,或者点选择文件。
- 选择要导出的工作表,每个工作表后面标着它的行数。
- 选择 CSV 或 JSON。选 CSV 时设置分隔符;如果之后还要用 Excel 打开,保持勾选添加 BOM。选 JSON 时说明第一行是不是列名,如果是,每一行会变成一个对象。
- 看一下预览,然后点下载,或者复制到剪贴板。
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/15 | 2023-03-15 |
| 45000.75,格式 yyyy-mm-dd hh:mm | 2023-03-15 18:00 | 2023-03-15 18:00 |
| 1234.5,格式 #,##0.00 | 1,234.50 | 1234.5 |
| 公式 =D2*2,上次计算结果 2469 | 2469 | 2469 |
| TRUE | TRUE | true |
| 1904 日期系统中的 45000 | 2027/3/16 | 2027-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 文件,于是出现乱码。