跳到主要内容

JSON 转 Excel

把 JSON 数组转成可打开的 xlsx 表格

自动合并所有字段成列数字/布尔保持类型数据不上传

JSON 数据

转换结果

最后更新:2026-10-11

工具介绍

把 JSON 交给同事看,不如转成一张能直接打开的表格。本工具把 JSON 数组转成标准 xlsx 文件:所有记录出现过的字段会合并成列(而不是只看第一条,那样会静默丢掉后面才出现的字段),嵌套对象展平成 user.addr.city 这样的点号路径,数字和布尔值按真实类型写入而不是当文本,空值留成真正的空格。生成的 xlsx 是完整合法的 Office 文件,双击就能用 Excel、WPS 或 Numbers 打开。整个过程在浏览器本地完成,数据不上传 —— 接口返回的用户数据、订单记录都不必经过第三方服务器。

功能特性

字段取所有行的并集

只按第一行决定列,会静默丢掉后面才出现的字段,属于数据丢失而非报错。这里遍历所有记录取字段并集,并保持首次出现的顺序。

嵌套对象展平

user: { name, addr: { city } } 会变成 user.name 与 user.addr.city 两列,层级用点号连接,分隔符可自定义。

类型正确写入

数字写成数值格、布尔写成 TRUE/FALSE,这样在 Excel 里能直接求和、筛选、排序 —— 如果全写成文本,这些操作都会失效。

空值留成真空格

JSON 的 null 会写成空白单元格,而不是字符串 "null"。后者在 Excel 里会被当成有效文本参与统计。

中文工作表名

工作表名可自定义,中文名能正确写入并在 Excel 里正常显示。

自动列宽

按内容显示宽度估算列宽,中文按两个字符宽度计算,打开时不用手动拉列。

怎么用

  1. 1

    粘贴 JSON

    把 JSON 数组粘进输入框,或上传 .json 文件。

  2. 2

    确认表格预览

    检查识别出的列与数据是否符合预期,必要时调整展平选项。

  3. 3

    设置工作表名

    给生成的工作表起个名字,支持中文。

  4. 4

    下载 xlsx

    点击下载,得到一个可直接用 Excel 打开的文件。

参数说明

JSON 数据
顶层应为数组;单个对象会自动当作只有一行的表格处理。
工作表名
生成的 sheet 名称,不能含 : \ / ? * [ ] 等字符,长度上限 31。
展平嵌套
开启后把嵌套对象展平成点号路径,关闭则整个对象以 JSON 文本写入一格。
分隔符
展平时用的连接符,默认是点号,可改成下划线等。

适用场景

  • 把接口返回的 JSON 转成表格发给运营或业务同事
  • 导出用户列表、订单记录做进一步统计
  • 把配置文件里的数组整理成可对比的表格
  • 在没有编程环境时快速把 JSON 数据变成可筛选的表格
  • 把嵌套的日志数据摊平成一行一条便于透视

常见问题

关于这个工具,你可能会问

生成的 xlsx 直接用 Excel 打开会不会提示文件损坏?

不会。xlsx 本质上是一个 ZIP 压缩包,里面装着几个规定好的 XML 文件。只要这几部分结构正确,任何符合标准的表格软件都能打开。这里生成的文件包含完整的必需部件,并用 Python 的 openpyxl 库实际打开验证过 —— 中文工作表名、数字与布尔的类型、特殊字符转义、前后空白保留都逐一核对过,这些验证结果被固化成了自动化测试,防止以后改动时出现退化。

为什么不用现成的表格库?

因为与本站其它工具同样的理由:数据不出浏览器。引一个第三方库本身不违反这个承诺,但用户无法验证那个库是否会把数据发到某处,这个疑点就足以让人不敢用它处理真实数据。而生成 xlsx 所需的全部能力(压缩、XML 拼装)浏览器原生就有,自己实现完全可行,代价只是需要额外验证正确性 —— 这份代价我们用交叉验证和回归测试来承担。

数字会变成文本吗?

不会。检测到数字就用数值类型写入,布尔值写成 TRUE/FALSE。这一点很重要:如果全部按文本写,单元格右上角会出现绿色小三角,求和得到 0,排序也变成按字符串比较(于是 "10" 排在 "9" 前面)。不过要注意,如果 JSON 里本来就是字符串 "123"(带引号),那里会保持文本,因为那是原始数据的真实类型。

嵌套的对象和数组怎么处理?

默认会把嵌套对象展平成点号路径,例如 user: { addr: { city: "北京" } } 得到一列 user.addr.city。数组则默认整体序列化为 JSON 文本放进一格。你可以在选项里切换:关闭展平会把整个对象以 JSON 文本写入单格,适合只想保留原始结构的场景。展平深度有上限,超过时会明确提示而不是无限展开把列数撑爆。

null 和空字符串有区别吗?

有,且都会保留。JSON 的 null 会写成真正的空白单元格(Excel 里就是空),空字符串 "" 则写成空文本。两者在 Excel 里看起来都像空格,但筛选和公式处理时行为不同,所以不做合并。这也是为什么不会把 null 写成字符串 "null"。

最多能转多少行?

理论上限是 Excel 本身的上限,即 1048576 行、16384 列。实际上真正的限制是你的浏览器内存 —— 几十万行会明显变慢。列数还有单独的上限,因为列太多会让表格难以使用,超过时会提示。日常的接口数据、导出报表都远在这条线以下。

为什么第一列不是我 JSON 里的字段顺序?

列顺序按字段在所有记录里**首次出现**的位置决定。如果某条记录里字段的书写顺序与其它记录不同,列的位置会以最早出现的那条为准。这样既保证了所有字段都被收录,又让输出顺序稳定可预期 —— 同一个输入每次得到的列顺序都一样。

下载的文件名可以改吗?

可以,浏览器会弹出保存对话框让你决定文件名和位置(取决于你的浏览器设置)。工作表名则是在页面上设定的,它与文件名是两件事:文件名是磁盘上的标识,工作表名是 Excel 打开后底部标签页上显示的文字。