DevTool 团队

把 Excel 变成 JSON 的三种方法:在线工具、公式与 Python

表格怎么变成接口要的 JSON?本文讲清表头映射成键名、一行变一个对象的规则,对比在线工具、Excel 公式与 Python 三条路,以及合并单元格、日期与大数订单号的坑。

为什么要「表格变 JSON」

接口要 JSON,仓库里却是 Excel——这是数据对接里最常见的错位。表格是给人看的二维结构:首行表头,下面一行一条记录;JSON 是给程序读的树形结构:一个对象一条记录,键名对应字段。

转换的本质就一条映射规则:表头变成键名,每一行变成一个对象,所有行组成一个数组。理解了这一点,三种方法只是在「谁来执行这条规则」上不同:浏览器里的在线工具、Excel 自己的公式、或者 Python 脚本。

方法一:在线工具,适合一次性的转换

Excel 转 JSON 工具走这条路:

  1. 上传 .xlsx 文件,或直接把从 Excel、WPS 里复制的表格区域粘贴进去。
  2. 首行自动作为键名;多工作表的文件可以切换导出某一张,或一次导出为「表名: 数据」的结构。
  3. 勾选需要的列,只导出业务字段。
  4. 复制或下载结果。

几个对结果影响很大的细节,这个工具都做了处理:数字与布尔保留原生类型而不是全变字符串;日期可以选择 ISO 8601、Excel 序列号或原始文本;16 位以上的整数保留为字符串——订单号、雪花 ID 不会末尾变 0。整个解析在浏览器本地完成,文件不上传服务器,内部数据也能用。

方法二:Excel 公式,适合几行数据的小片段

给接口写测试数据、造一条示例记录时,不值得动用工具。用 TEXTJOIN 和 & 直接在单元格里拼:

="{"&""""&$A$1&""""&":"&""""&A2&""""&","&""""&$B$1&""""&":"&B2&"}"

A1、B1 是表头,A2、B2 是第一行数据。下拉填充,每行得到一个对象字面量,再在外层套上中括号、用逗号连接,就是一个 JSON 数组。

这个方法的边界很清楚:十几行、字段类型全是文本时最好用;数字精度、转义引号、日期格式都要自己兜,超过一屏就该换方法。

方法三:Python,适合要重复跑的转换

表格每周更新、转换要进流程时,写成脚本:

import pandas as pd
import json

df = pd.read_excel("orders.xlsx", dtype={"order_id": str})
records = df.to_dict(orient="records")

with open("orders.json", "w", encoding="utf-8") as f:
    json.dump(records, f, ensure_ascii=False, indent=2)

dtype={"order_id": str} 把订单号列按文本读入,从源头避开精度问题;to_dict(orient="records") 得到的正是「一行一个对象」的列表;ensure_ascii=False 让中文保持原样而不是转义成 \uXXXX。

日期列需要单独处理:pd.read_excel 会把日期读成 Timestamp,json.dump 之前先 df["created_at"] = df["created_at"].dt.strftime("%Y-%m-%d") 转成目标格式。

转换前值得检查的三件事

表格本身规不规范。 合并单元格、双层表头、小计行、空白间隔行,这些「人看着舒服」的排版都是机器转换的障碍。转换前把数据整理成规整的二维表:一个表头行、每行填满、无合并。

数字是真的数字还是编号。 金额、数量用数字类型没问题;订单号、手机号、身份证号在 JSON 里应该永远是字符串。判断标准:这个值你会对它做加减乘除吗?不会就转成字符串。

多张工作表要不要分开。 一张工作表对应一个数组是默认行为;多表文件先想清楚要的是「每张一个数组」的集合,还是拼成一个带表名键的对象。

常见问题

Excel 转 JSON 时表头会变成什么?

常规约定是首行表头映射为 JSON 对象的键名,之后每一行数据变成一个对象,组成数组。表头为空的列会补 column_N 这样的默认名,重名表头自动加后缀,避免键名冲突。

订单号这类长数字转 JSON 后末尾变成 0 怎么办?

这是数字精度问题,不是转换丢了数据:超过 15-16 位的整数无法被精确表示成双精度浮点数。转换时应把这类列按文本处理、输出为 JSON 字符串而不是数字;可靠的转换工具会自动保留为字符串。

合并单元格的表格能直接转 JSON 吗?

不能直接转。合并单元格意味着部分行的值为空,机械转换会得到一堆 null 或空字符串。先把表格整理成规范的二维表——每行填满、一个表头行——再转换,得到的 JSON 才可用。

Excel 里的日期转 JSON 后会变成什么?

取决于转换器的处理:常见输出有 ISO 8601 字符串(2026-09-30T00:00:00Z)、Excel 日期序列号(一个数字)和原始显示文本三种。接口对接前先确认对方要哪种,尤其是带时区语义的场景。

在浏览器里转换 Excel 会把文件传上去吗?

看具体工具的实现。本站的转换工具在浏览器本地解析 .xlsx,文件全程不上传服务器;使用其他在线服务前应查看其隐私说明,含敏感数据的表格尤其要确认这一点。

相关阅读