Excel 转 JSON:转换差异、边界与常见坑
在线 Excel 转 JSON:首行作为字段名映射为对象数组,数字、空白与日期分别按明确规则定类型,避免日期变数字、空单元格变 null 这类隐性坑;导入前先确认哪一行是表头。
工作表转对象数组,第一行作键、每行作对象。真正的坑在类型推断:001 会变成 1、超过 15 位的编号会被浮点化、空单元格与缺失字段在 JSON 里长得一样。转换前把该列格式固定下来,结果才稳定。
两种格式的差异对照
| 维度 | Excel(表结构) | JSON(对象数组) |
|---|---|---|
| 组织结构 | 二维网格(行 × 列) | 对象数组,天然支持嵌套 |
| 键名 | 第一行作为列名 | 列名映射为对象键,含空格的列名需要清洗 |
| 类型表达 | 单元格类型 + 显示格式 | 按内容推断 number/boolean/string,无格式概念 |
| 空值 | 空单元格 | null 或 ""(语义不同,需明确约定) |
| 嵌套能力 | 靠多表或重复列表达层级 | 直接嵌套对象与数组 |
| 数组表达 | 需要多行或分隔符约定 | 原生数组,语义明确 |
| 可读性 | 适合人工查看与录入 | 适合程序消费与接口传输 |
| 体积 | 含样式与结构,较大 | 纯数据,精简 |
边界条件
- 同一列混有文本与数字("12" 与 12)时推断结果不一致,会导致下游类型校验失败——先统一整列格式。
- 列名含中文、空格或特殊符号时不是合法键名,需要转成拼音/下划线或加引号包裹。
- 多行表头(合并单元格)会让第一行并不是真正的列名,转换前必须先合并成单行表头。
- 空行(整行空白)通常会被过滤,若它承载分隔语义则在 JSON 中彻底丢失。
常见坑
- 前导零编号被当成数字,JSON 里成了 1 而不是 "001",回写数据库直接错位。
- 多工作表只导出了活动表,其余数据静默丢失。
- 列名重复(两列都叫"备注")时后者覆盖前者,JSON 对象无法表达重复键。
- 数字超过 2^53 时在 JS 侧解析失真,大整数编号应当以字符串传输。
相关工具
- Excel 转 JSON 工具把 Excel 文件(xlsx、xls、csv)转为 JSON,支持嵌套表头、工作表选择与键名映射,用 SheetJS 在浏览器完成,适合业务数据导入。支持选择工作表、指定表头行与把首行映射为字段名。嵌套表头会按层级组装为嵌套对象,数字与日期保留原始类型。可指定表头行并自定义字段名。
- 数据格式转换器在 JSON、YAML、TOML、XML、CSV 之间一处粘贴自由互转并实时预览。在 JSON、YAML、TOML、XML 与 CSV 之间任意互转,粘贴一次即可看多种输出。转换时会提示解析失败的位置,避免带着语法错误继续处理。适合在不同工具链之间迁移配置文件。支持粘贴即转。多种格式的输出可逐一取用。
- Excel 转 CSV 工具把 Excel 转为 CSV,可自定义分隔符并批量转换多个工作表,用 SheetJS 本地处理。可自定义分隔符与是否保留表头,并一次性转换多个工作表。字段内含分隔符或换行时会自动加引号转义。适合把表格交给数据库批量导入或交给脚本继续处理。输出可选 UTF-8 编码以避免中文乱码。
- Excel 转 HTML 工具把 Excel 转为带样式的整洁 HTML 表格,支持工作表选择与响应式输出。转成带行列结构的表格标记,保留合并单元格并可选输出响应式样式。可指定使用哪个工作表,并选择是否把首行渲染为表头。适合把报表贴进内网页面、邮件正文或文档系统。输出为纯静态标记,不依赖外部样式表。表格标记可直接粘进页面。
常见问题
怎么把 JSON 再转回 Excel?
使用同工具的交换方向功能,或本站对应的「JSON 转 Excel」页面,两者都本地运行、数据不上传,可完成往返转换与校验。
Excel 和 JSON 哪个更适合人类阅读?
这取决于场景:JSON 通常更偏向程序解析与接口传输式的可读形态,而 Excel 更利于程序解析与接口传输式的程序消费;需要人工编辑时优先选可读性更高的那一侧。
表头和数据类型是怎么映射的?
默认把第一行当表头、每行转成一个 JSON 对象:列名作键、单元格值作值。类型通常按内容推断(纯数字转 number、true/false 转 boolean、其余为 string),因此 001 这类带前导零的编号会变成数字 1——转换前请把该列设为文本。
空单元格和不存在的列会输出什么?
空单元格一般输出为空字符串或 null(取决于选项),缺少整列时该键直接不出现。下游做校验时不要把"键缺失"和"值为 null"混为一谈,它们是两种不同的语义。