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

如何在Python中将嵌套字典写入.xlsx文件(多工作表场景)

解决多列xlsx文件生成问题(替代xlwt)

嘿,我懂你的困扰——xlwt只支持老式的xls格式,列数上限卡得死死的256,碰到列数超标的场景直接就不行了。要搞定这个需求,换成支持xlsx格式的库就好,比如openpyxl或者xlsxwriter,这俩都没有256列的限制,完全能满足你的需求。下面我给你用openpyxl写个完整的示例代码,刚好能把你提供的字典转换成带两个独立工作表的xlsx文件:

步骤1:安装openpyxl

首先得先安装这个库,打开终端运行:

pip install openpyxl

步骤2:编写转换代码

把下面的代码保存成.py文件运行就行:

from openpyxl import Workbook

# 你的原始数据字典
data = {
    "sheet_A": {
        "2017": {"col1": "a", "col2": "b", "col3": "c", "col4": "d"},
        "2018": {"col1": "aa", "col2": "bb", "col3": "cc", "col4": "dd"},
        "2019": {"col1": "aaa", "col2": "bbb", "col3": "ccc", "col4": "ddd"}
    },
    "sheet_B": {
        "2017": {"col1": "e", "col2": "f", "col3": "g", "col4": "h"},
        "2018": {"col1": "ee", "col2": "ff", "col3": "gg", "col4": "hh"},
        "2019": {"col1": "eee", "col2": "fff", "col3": "ggg", "col4": "hhh"}
    }
}

# 创建工作簿对象
wb = Workbook()

# 移除默认生成的空白工作表(可选,因为我们要创建对应名称的工作表)
wb.remove(wb.active)

# 遍历每个工作表的数据
for sheet_name, year_entries in data.items():
    # 创建对应名称的工作表
    ws = wb.create_sheet(title=sheet_name)
    
    # 获取表头(取第一个年份的列名,假设所有年份的列结构一致)
    headers = list(next(iter(year_entries.values())).keys())
    # 写入表头到第一行
    ws.append(headers)
    
    # 遍历每个年份的数据,逐行写入工作表
    for year, col_values in year_entries.items():
        # 组合成一行数据:年份 + 各列对应值
        row_data = [year] + [col_values[header] for header in headers]
        ws.append(row_data)

# 保存生成的xlsx文件
wb.save("multi_sheet_output.xlsx")

代码说明

  • 这段代码会自动创建sheet_A和sheet_B两个工作表,每个表的第一行是col1到col4的表头。
  • 后续每行对应一个年份的数据,第一列为年份,后面跟着各列的具体值。
  • openpyxl支持xlsx格式的最大列数是16384,完全不用担心列数超标的问题,哪怕你后续列数再增加也能轻松处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:56:55