JSON 转 Excel 转换器
JSON使用 SheetJS 将 JSON 数组转换为 Excel .xlsx 工作簿并下载。
不获取远程 URL;请直接粘贴你的 JSON。
本页内容
什么是 JSON 转 Excel 转换器?#
JSON 转 Excel 转换器把一份表格形状的 JSON——通常是一组相似对象组成的数组——产出一个真正的 .xlsx 工作簿,可以用 Excel、Google Sheets 或 LibreOffice 打开。每个对象变成一行,每个顶层键变成一列,工作簿的第一行是表头。输出是一个实打实的二进制电子表格文件,不是改了后缀名的 CSV。
它填的是 JSON 系统和电子表格人之间的缝。后端可以倒出一千条 JSON 记录,但人类分析师要的是放进 Excel 里做透视、筛选、图表。转换器还要应付真实数据的各种乱:嵌套对象、某些行有某些行没有的字段、以及数组类型的字段——它们在网格里没有天然的落脚点。
有两个约定在干重活。嵌套对象会用点号键拍平——{"address": {"city": "London"}} 变成一列 address.city。数组字段(以及没被拍平的对象)会被序列化成 JSON 文本塞进单元格,因为一个电子表格单元格只能装一个值,装不下嵌套结构。结果是一张扁平、矩形的表,电子表格软件能毫无怨言地打开。
怎么使用#
- 把一个 JSON 对象数组粘进左侧 输入 框。也接受单个对象,或把行包在单个键下的对象(比如
{"data": [...]})。 - 勾上 拍平嵌套(Flatten nested,默认开启),把嵌套对象展开成点号列。如果你想让嵌套对象作为 JSON 文本留在单个单元格里,就取消勾选。
- 输出 框显示一段制表符分隔的预览,和将要落进工作表的内容一模一样——先是表头行,再是数据行。状态栏报告导出了多少行。
- 点 下载 .xlsx(Download .xlsx)保存工作簿。文件在你的浏览器里生成、直接下载,没有服务端。
- 点 示例(Sample)载入一份小型员工数据;点 清空(Clear)重置两边并禁用下载按钮。
主要特性#
- 真正的 .xlsx 文件,不是改名的 CSV。 工作簿由 SheetJS 生成、以二进制下载,Excel 能原生打开,列、类型、工作表结构都正确。
- 脏数据下列序稳定。 列由所有行的键取并集、按首次出现顺序计算。参差不齐的行不会让列错位——缺的字段就是一个空单元格。
- 点号拍平。 嵌套对象展开成具名列(
address.city、address.zip),里面的值在工作表里可以单独筛选和排序。 - 制表符预览。 输出框和工作表内容完全一致,下载前就能核对形状。
- 纯客户端。 解析、拍平、生成工作簿全在你浏览器里跑,数据不离开本页。
实例演示#
点 示例,输入是三条员工记录组成的数组:
[
{ "id": 1, "name": "Ada Lovelace", "role": "Engineer", "salary": 95000, "skills": ["math", "logic"] },
{ "id": 2, "name": "Bob", "role": "PM", "salary": 120000, "skills": ["docs", "plan"] },
{ "id": 3, "name": "Grace", "role": "Architect", "salary": 150000, "skills": ["systems", "c", "cobol"] }
]
三行的键相同,所以列依次是 id、name、role、salary、skills。skills 是数组,所以被序列化进每个单元格。制表符预览是:
id name role salary skills
1 Ada Lovelace Engineer 95000 ["math","logic"]
2 Bob PM 120000 ["docs","plan"]
3 Grace Architect 150000 ["systems","c","cobol"]
点 下载 .xlsx,你拿到一个工作簿,其第一个工作表就是这串内容,表头行是 id / name / role / salary / skills。在 Excel 里,salary 会被当作数字(能求和、求平均),skills 是文本。
如果再加一行漏掉 salary 的记录,转换器依然产出这五列,只是把那个单元格留空——不会错列,下游数据不会乱。
常见问题#
为什么我的嵌套对象变成了带点号的列名?#
那是 拍平嵌套 选项在起作用。一个像 "address": {"city": "London", "zip": "NW1"} 的字段塞进一个单元格里并不好用,所以它被展开成 address.city 和 address.zip 两列——在 Excel 里各自可以筛选、排序。如果你想把整个对象作为 JSON 字符串留在单个 address 单元格里,关掉这个选项。
为什么我的数组在单元格里显示成 ["math","logic"]?#
电子表格单元格只装一个值,而 JSON 数组是嵌套结构,所以它被重新序列化成 JSON 文本、原样放进单元格。这样数据无损——什么都不丢——之后还能再解析。如果你想要每个数组元素各占一行,先把源 JSON 重组一下(每个元素一条记录)再转。
我的各行字段不一样,列会怎样?#
转换器取所有行所有键的并集,按首次出现的顺序作为表头。某行缺某个字段,对应单元格就是空的。所以加一行多了一个 manager 字段,就多一列 manager;没有这字段的行留空,已有的列一点不动。
生成 .xlsx 时我的数据会被上传到哪儿吗?#
不会。解析、拍平、SheetJS 生成工作簿全在你浏览器里完成。下载是从内存缓冲区直接交给浏览器的保存对话框产出——没有后端,没有网络请求。