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

如何使用Python的xlsxwriter写入跨多列的合并表头?

解决方案

你可以直接使用xlsxwriter内置的merge_range()方法实现跨列合并表头,无需额外引入其他库。适配你现有数据结构的实现代码如下:

import xlsxwriter
from itertools import groupby

# 你的原始数据
rows=[["a","b"],['1','2','3','4']]
cols=[['a','1'],['a','2'],['b','3'],['b','4']]

workbook = xlsxwriter.Workbook('table.xlsx')
worksheet = workbook.add_worksheet()

# 可选:定义表头格式,居中加粗
header_format = workbook.add_format({
    'align': 'center',
    'bold': True
})

# 第一步:自动统计每个表头对应的连续列范围
all_headers = [col[0] for col in cols]
col_idx = 0
for header, group in groupby(all_headers):
    # 计算当前表头覆盖的列数
    span = len(list(group))
    end_col = col_idx + span - 1
    # 合并单元格并写入表头
    worksheet.merge_range(0, col_idx, 0, end_col, header, header_format)
    col_idx = end_col + 1

# 第二步:写入后续数据行(从第二行开始,索引为1)
for row_idx in range(1, len(rows)):
    for col_idx, val in enumerate(rows[row_idx]):
        worksheet.write(row_idx, col_idx, val)

workbook.close()

代码逻辑说明

  • 从你已有的cols列表中提取所有列的顶层表头值,通过groupby统计连续相同表头的列跨度,自动计算合并的起止列索引,无需手动硬编码合并范围,适配DL输出的动态表格场景
  • 如果你提前知道表头的合并范围,也可以直接调用worksheet.merge_range(行号, 起始列, 行号, 结束列, 内容)手动指定合并区域
  • 合并单元格后内容默认放在区域左上角单元格,写入数据时不会覆盖合并后的表头内容

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 20:06:05