如何以最优方式将重复层级结构的Excel表格转换为JSON?
Excel转重复层级结构JSON的最优实现方案
核心前提说明
首先得明确你的Excel表格实际排版逻辑:比如每个重复的层级块是按固定行数分组(比如一个mainheading占8行:1行mainheading、1行subheading、3行mandatory字段、2行optional字段),还是用列区分层级(比如列A存mainheading、列B存subheading、列C标记mandatory/optional、列D存字段名/属性)。下面给出两种最实用的方案:
方案一:Python + Pandas(最优,可复用/灵活)
这是处理这类结构化转换的首选,尤其是需要重复执行或结构复杂的场景。
步骤1:安装依赖
pip install pandas openpyxl
(openpyxl用于读取.xlsx格式,.xls格式替换为xlrd)
步骤2:核心代码逻辑(以「固定行数分组的Excel」为例)
假设每个循环块固定占8行,代码逻辑如下:
import pandas as pd import json # 读取Excel,跳过表头(如果有) df = pd.read_excel("your_file.xlsx", header=None, skiprows=0) # 定义每个循环块的行数(根据你的实际结构调整) block_size = 8 result = [] # 按块遍历Excel内容 for i in range(0, len(df), block_size): block = df.iloc[i:i+block_size].values.flatten().tolist() # 清理空值(Excel里的空单元格) block = [x for x in block if pd.notna(x)] # 提取并清理层级字段 main_heading = block[0].replace("mainheading: ", "").strip() sub_heading = block[1].replace("subheading: ", "").strip() field_name = block[3].replace("fieldname: ", "").strip() field_type = block[4].replace("type: ", "").strip() field_desc = block[5].replace("description: ", "").strip() field_func = block[6].replace("function: ", "").strip() optional_type = block[7].replace("type", "").strip() optional_desc = block[8].replace("description", "").strip() # 组装目标JSON结构 item = { main_heading: { sub_heading: { "mandatory": { field_name: { "type": field_type, "description": field_desc, "function": field_func } }, "optional": { "type": optional_type, "description": optional_desc } } } } result.append(item) # 导出为格式化的JSON文件 with open("output.json", "w", encoding="utf-8") as f: json.dump(result, f, indent=4, ensure_ascii=False)
调整说明
如果你的Excel是列区分层级(比如列A=mainheading,列B=subheading,列C=类别(mandatory/optional)),可以直接用df.groupby(["A", "B"])分组聚合,代码逻辑会更简洁,无需按行数切割。
方案二:Excel Power Query(无代码,适合非开发人员)
如果只是临时转换,用Excel自带的Power Query足够:
- 选中Excel数据区域,点击「数据」选项卡 → 「从表格/区域」
- 在Power Query编辑器中,按层级分组:先按mainheading分组,再嵌套subheading分组
- 对mandatory和optional部分分别提取属性,构建嵌套结构
- 完成后点击「关闭并上载」,再通过「转换」→「到JSON」导出结果
关键注意事项
- 确保Excel里的层级标记(比如
mainheading:)格式统一,否则字符串替换或分组会出错 - 先清理Excel里的不规则空行,避免干扰逻辑
- 复杂结构优先用Python方案,支持调试和批量处理
内容的提问来源于stack exchange,提问作者Kiran
相关产品推荐
相关产品推荐

