使用openpyxl时外层分组覆盖/移除内层分组问题求助
Excel多级行分组设置问题解决
问题描述
需要在Excel工作表中创建多个Outline Level 1的行分组,并在这些分组外层设置一个Outline Level 2的嵌套分组,但运行现有代码后,外层分组会覆盖或移除内层的Level 1分组,无法实现预期的嵌套结构。
问题原因
openpyxl的row_dimensions.group()方法默认会清除指定行范围内已存在的分组配置。原有代码先创建内层Level 1分组,再创建外层Level 2分组时,外层分组的范围(7-17行)包含了所有内层分组的行,导致内层分组被清除,最终仅外层Level 2分组生效。
修正后的代码
import openpyxl wb = openpyxl.load_workbook("Planung.xlsx") ws = wb["Zeitplan"] ws.sheet_properties.outlinePr.summaryBelow = False # 先设置外层Level 2分组 ws.row_dimensions.group(7, 17, outline_level=2) # 再设置内层Level 1分组,覆盖对应行的层级配置 ws.row_dimensions.group(9, 11, outline_level=1) ws.row_dimensions.group(13, 13, outline_level=1) ws.row_dimensions.group(16, 17, outline_level=1) wb.save('test.xlsx')
验证步骤
- 创建名为
Planung.xlsx的Excel文件,新建名为Zeitplan的工作表 - 运行上述修正后的代码
- 打开生成的
test.xlsx,即可看到预期嵌套分组效果:7-17行为Level 2分组,内部包含三个独立的Level 1子分组
内容的提问来源于stack exchange,提问作者codeofandrin
相关产品推荐
相关产品推荐

