如何使用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
相关产品推荐
相关产品推荐

