Excel 转 JSON 工具

数据转换

把 Excel 文件(xlsx、xls、csv)转为 JSON,支持嵌套表头、工作表选择与键名映射,用 SheetJS 在浏览器完成,适合业务数据导入。支持选择工作表、指定表头行与把首行映射为字段名。嵌套表头会按层级组装为嵌套对象,数字与日期保留原始类型。可指定表头行并自定义字段名。

未选择文件

关于 Excel 转 JSON 工具

Excel 转 JSON 工具基于 SheetJS(xlsx)库在浏览器本地解析 xlsx、xls、csv 格式的电子表格文件,将其转换为结构化 JSON 数据。解析过程支持多工作表选择、表头行定位、嵌套表头识别以及自定义键名映射。与转纯文本或 CSV 不同,转 JSON 的价值在于保留并表达"结构":SheetJS 使用纯 JavaScript 实现的 Office Open XML 解析器,无需依赖服务端组件即可读取单元格值、公式结果、日期类型和数字格式,因此导出的 JSON 能尽量保留原始数据类型——数字保持数值、日期转为 ISO 字符串、公式给出计算结果而非公式文本。Table-to-object 的转换依赖表头行,所以首行是否为表头、表头是否有合并单元格,直接决定键名是否错位,转换前务必确认。整理好的 JSON 可直接用于 API 数据对接、数据库导入或前端可视化。若表格含商业机密或客户数据,可放心使用,所有解析都在浏览器本地完成,不经过任何服务器。

表头如何映射成结构,是转换前必须定下的第一个决定。一行表头可以生成一组平铺的键,也可以按分隔符拆成嵌套层级;前者结构扁平、下游好用,后者更贴近真实语义但要求下游按固定路径取值。选择哪一种取决于使用方,而不是取决于哪一种更「好看」,并且应当在团队内统一,避免同一份数据导出成两种结构。

类型推断是这类转换里最容易产生隐性错误的环节。表格单元格没有严格的类型信息,数字与文本外观相同,日期在底层是一个序列值。因此转换时需要明确每列的目标类型:按内容自动推断会方便但可能把编号变成数字、把零开头的编码去掉前导零;按列显式声明更繁琐却可预期,关键字段建议后者。

空单元格的处理有两种语义,混用会让下游逻辑出错。空值可以表示为显式的空标记,也可以在结构中省略该键;前者适合「字段存在但无值」,后者适合「该字段不适用」。因此转换前应当确认下游是按哪种方式判断缺失的,尤其在需要区分「零」与「没有填写」的业务里,这一区别会直接影响统计口径。

多行表头与合并表头需要先做一次规范化,否则结构会错位。真实表格常有两行表头(大类加小类)或合并单元格带来的层级,若直接取第一行作键名,后续列的语义会全部对应错误。因此遇到这类表格应先摊平成单行表头再转换,把「大类 – 小类」组合成一个完整键名,而不是在导出后再补救。

输出的顶层形状也需要提前约定,常见的有对象数组与按主键索引的对象两种。对象数组保留顺序、便于逐条处理,适合后续做统计分析;按主键索引的对象查找更快,但会丢失原始顺序,且在键重复时后一条会覆盖前一条。因此当表格里存在重复键时,应先确认是否要去重或改为数组,而不是默认后者不会发生。

最后,表格规模会影响导出方式与可用性。几千行以内的数据一次转换没有压力,而达到数十万行时,生成的文件体积与解析耗时都会显著上升,此时应考虑分片输出或改用更适合大批量的数据格式。因此在动手前先看一眼行数,比转换后再发现下游读不动更省事。

实现原理

导出把表头行当作键、其余行当作记录。两个决定结果的地方:一是表头是否唯一且非空,重复表头会让后一列覆盖前一列;二是类型推断——因为单元格没有类型,数字会落成字符串,日期会按显示格式落成文本,因此需要数值时应先确认源列只含纯数字。

输入表头为 id、id(重复)
输出第二列覆盖第一列,最终只保留一个 id 键——导出前应先把表头改为唯一

本页实测数据

对象化口径首行作键、后续每行一个对象——与 SheetJS sheet_to_json 的默认行为一致(3 行逐键一致)
缺失单元格值为空的单元格不产出键(「香蕉」行没有备注键),而不是带 null——下游代码用 '备注' in obj 判断比 obj['备注'] == null 更可靠
空串单元格显式写入的空串单元格会以 "" 出现(文件里存在该单元格但无值)——「键缺失」与「键存在但值为空串」语义不同,都如实保留
数字类型数字单元格输出为数字(3、7、0)而不是字符串
工作表切换切到 Second 表输出 [{"x": 1}],切换确实重新转换

输出是「每行一个对象」的数组,键来自首行——适合直接喂给程序,但也意味着:①表头必须唯一,重名的列会互相覆盖;②空单元格不产出键,所以同一数组里对象的键集合可能不一致,遍历时用 in 判断而不是假设键一定在。「键缺失」与「空串」是两回事:实测里 3 行数据的第 3 行名称单元格缺失,输出就没有该键;而显式写了空串的单元格会以 "" 出现——清洗数据时这两个情况要分开处理。

测量方式: openpyxl 造 2 个工作表(首行表头 + 3 行数据:正常行、缺列行、缺失单元格行),上传后把输出的 JSON 解析回对象,与按 sheet_to_json 口径独立计算的期望逐键比对;另测工作表切换。 · 实测于 2026-10-30

使用方法

  1. 打开「Excel 转 JSON 工具」
  2. 导入或粘贴待处理的数据
  3. 根据需要调整输出选项
  4. 点击「处理」按钮,结果实时显示
  5. 复制或导出结果

使用场景

  • API 数据对接 — 将业务方提供的 Excel 数据转为 JSON 格式,直接作为 API 的请求体或响应数据使用。
  • 数据库导入 — 把 Excel 中的客户或产品数据转为 JSON 后通过脚本批量导入 MongoDB 或 PostgreSQL。
  • 配置文件生成 — 将 Excel 中维护的配置参数表转为 JSON 配置文件,供前端或后端应用加载。
  • 数据迁移 — 将旧系统导出的 Excel 数据转为 JSON 中间格式,便于迁移到新系统的数据结构。
  • 前端数据可视化 — 将 Excel 数据转为 JSON 供 ECharts 或 D3.js 等图表库直接渲染可视化。
  • 接口测试造数 — 把测试用例从 Excel 转成 JSON 数组,作为接口自动化测试的输入数据源。

常见问题

支持哪些 Excel 文件格式?

支持 xlsx(Office Open XML)、xls(BIFF8)、csv 三种格式。SheetJS 解析器能自动识别文件类型并正确解析。

能处理多个工作表吗?

能。工具会列出文件中的所有工作表名称,可选择指定工作表进行转换,也可逐个转换全部工作表。

日期和数字类型会丢失吗?

不会。SheetJS 能识别 Excel 的日期序列号并转为 ISO 8601 字符串,数字保持数值类型而非字符串。

首行不是表头怎么办?

可以通过表头行定位指定真正的表头所在行;若表头由合并单元格组成,先拆分或调整表头结构可避免键名缺失。

支持合并单元格吗?

合并单元格的值会取左上角单元格的值,其余位置为空。建议在转换前取消合并或调整数据结构。

文件会被上传到服务器吗?

不会。所有解析在浏览器本地通过 SheetJS 完成,文件内容不离开你的设备,可安全处理含商业机密的表格。

导出的 JSON 里数字变成了字符串?

电子表格的单元格本身没有类型概念,日期、以零开头的编号与超长数字在导出时都容易落成字符串,而含千分位分隔符的数字会被当成文本。需要数值时应先确认源列只含纯数字且没有分隔符,日期则明确目标格式后再导出;必要时在表格里先把该列格式化为文本或数值,以区分「本该是数字」与「本该是标识」。

空单元格在 JSON 里变成 null 还是空字符串?

工具把空单元格输出为空字符串("")还是 null 取决于选项,两者语义不同:null 表示「无值」,""表示「有值但为空」。接口对接时先确认对方期望哪种,混用是数据校验失败的常见原因。

广告