You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何以最优方式将重复层级结构的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足够:

  1. 选中Excel数据区域,点击「数据」选项卡 → 「从表格/区域」
  2. 在Power Query编辑器中,按层级分组:先按mainheading分组,再嵌套subheading分组
  3. 对mandatory和optional部分分别提取属性,构建嵌套结构
  4. 完成后点击「关闭并上载」,再通过「转换」→「到JSON」导出结果

关键注意事项

  • 确保Excel里的层级标记(比如mainheading:)格式统一,否则字符串替换或分组会出错
  • 先清理Excel里的不规则空行,避免干扰逻辑
  • 复杂结构优先用Python方案,支持调试和批量处理

内容的提问来源于stack exchange,提问作者Kiran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 21:20:32