如何用Python将不同键的多个字典写入同一张Excel工作表?
多字典分组写入Excel的实现方案
问题描述
我有多个键集合不同的字典,示例如下:
dict_a = { 'a': 'a', 'b': 'b' } dict_b = { 'x': 'x', 'y': 'y', 'z': 'z' } dict_c = { 'a': 'a', 'm': 'm', 'z': 'z' }
希望将这些字典按如下格式逐组写入同一张Excel工作表:
| a | b | |
|---|---|---|
| a | b | |
| x | y | z |
| x | y | z |
| a | m | z |
| a | m | z |
之前尝试将字典转为列表后用pandas创建DataFrame,但它会把所有字典的键合并到第一行,生成的表格不符合需求:
| a | b | x | y | z | m |
|---|---|---|---|---|---|
| a | b | ||||
| x | y | z | |||
| a | z | m |
请问如何实现预期的写入格式?
解决方案
推荐用openpyxl直接操作Excel,它能精细控制每个单元格的内容和格式,完美适配这种分组写入需求,步骤如下:
1. 安装依赖
如果还没装openpyxl,先执行安装命令:
pip install openpyxl
2. 编写实现代码
from openpyxl import Workbook from openpyxl.styles import Font # 把要写入的字典放到列表里统一处理 target_dicts = [dict_a, dict_b, dict_c] # 创建工作簿和默认工作表 wb = Workbook() ws = wb.active # 记录当前写入的行号,从第1行开始 current_row = 1 for d in target_dicts: keys = list(d.keys()) values = list(d.values()) col_num = len(keys) # 写入加粗的键行 bold_font = Font(bold=True) for col in range(col_num): cell = ws.cell(row=current_row, column=col+1, value=keys[col]) cell.font = bold_font # 切换到下一行,写入对应的值 current_row += 1 for col in range(col_num): ws.cell(row=current_row, column=col+1, value=values[col]) # 每组之间空一行(不需要的话,把下面这行改成current_row +=1) current_row += 2 # 保存Excel文件 wb.save("grouped_dicts.xlsx")
3. 代码说明
- 遍历每个字典,先写加粗的键行,再写对应的值行,自动适配字典的键数量
- 每组写完后默认空一行,可根据需求调整行号递增的数值
- 完全避免了pandas自动合并所有列的问题,精准控制表格结构
如果一定要用pandas,需要手动构造包含空行的特殊DataFrame,但步骤繁琐,不如openpyxl直接高效。
内容的提问来源于stack exchange,提问作者Tejasvi Kashyap
相关产品推荐
相关产品推荐

