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

使用Python Openpyxl拆分Excel多行单元格实现结构化表格输出

多行嵌套分类Excel扁平化实现方案

核心识别规则替换

废弃原有的字符串长度判断逻辑,基于源文件自带的格式特征做确定性识别:

  • 无前置空格/制表符的行,判定为所属分类项,用于更新当前遍历的分类上下文
  • 带前置空格/制表符的行,判定为具体产品名称项,直接绑定当前上下文的分类与对应产品编码生成独立记录

这套规则完全匹配源数据的格式约定,不存在长度判断带来的识别错位问题(比如短分类名、长产品名导致的逻辑错判)。

落地实现逻辑

  • 逐行扫描源表,提取每行对应的产品编码与多行混合分类内容
  • 拆分多行内容为独立行列表,维护临时变量存储当前正在遍历的分类值
  • 遍历拆分后的每一行内容:遇到分类行就更新临时分类值,遇到名称行就把产品编码、当前分类、产品名组装为一条扁平化记录存入结果列表
  • 新建输出工作簿,写入表头与所有扁平化记录,保存为独立结果文件

可直接运行的完整代码

from openpyxl import load_workbook, Workbook

# 按需修改为实际的文件路径
SOURCE_EXCEL = "你的源文件.xlsx"
OUTPUT_EXCEL = "扁平化输出结果.xlsx"

# 加载源文件
src_wb = load_workbook(SOURCE_EXCEL, data_only=True)
src_ws = src_wb.active

result_rows = []
TABLE_HEADERS = ["Product", "Classification", "Name"]

# 从第2行开始遍历源数据,跳过第一行表头
for row_data in src_ws.iter_rows(min_row=2, values_only=True):
    # 按需调整列索引:索引从0开始,0为第一列,根据实际表的列位置修改
    product_code = row_data[0]
    mixed_content = row_data[1]

    # 跳过空值行
    if not product_code or not mixed_content:
        continue

    content_lines = str(mixed_content).split("\n")
    current_category = ""

    for line in content_lines:
        trimmed_line = line.strip()
        # 跳过拆分产生的空行
        if not trimmed_line:
            continue

        # 识别带前置空格/制表符的名称行
        if line.startswith((" ", "\t")):
            result_rows.append([
                product_code,
                current_category,
                trimmed_line
            ])
        else:
            # 更新当前遍历的分类值
            current_category = trimmed_line

# 写入输出文件
out_wb = Workbook()
out_ws = out_wb.active
out_ws.append(TABLE_HEADERS)
for record in result_rows:
    out_ws.append(record)

out_wb.save(OUTPUT_EXCEL)
print(f"处理完成,共生成{len(result_rows)}条有效记录,文件已保存至{OUTPUT_EXCEL}")

使用注意事项

  • 列索引调整:代码默认Product为第一列、混合分类/名称为第二列,实际使用时根据源表的列位置修改row_data[0]和row_data[1]的索引值即可
  • 缩进兼容:识别逻辑同时支持普通空格、制表符作为前置缩进的情况,避免录入时混用缩进格式导致识别失败
  • 空值容错:代码内置了空单元格、拆分空行的跳过逻辑,不会因零散的空值触发运行报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 09:15:05