XlsxWriter:使用大纲与分组

Excel 可以对行或列进行分组,随后只需点击一次鼠标,就能隐藏或显示整组内容。这项功能称为“大纲与分组”。

大纲可以将复杂数据折叠为少量关键小计或汇总。例如,下面的工作表包含三个大纲分组。

_images/outline1.png

第 2 至 11 行被分为第 1 级组,第 2 至 5 行以及第 7 至 10 行分别被分为第 2 级组。左侧线条称为“大纲级别”栏,栏上方的小数字表示对应级别。

点击每个第 2 级大纲旁的减号,就会折叠并隐藏数据,如下图所示。

_images/outline5.png

减号会变成加号,表示大纲中的数据已隐藏。这体现了大纲的作用:只需点击两次鼠标,显示的数据就缩减为两个小计和一个总计。

最后,点击第 1 级大纲旁的减号,即可进一步折叠其余各行:

_images/outline6.png

在 XlsxWriter 中使用大纲与分组

XlsxWriter 通过工作表的 set_row() 和 set_column() 方法设置大纲级别,从而实现分组:

worksheet.set_row(row, height, cell_format, options)
worksheet.set_column(first_col, last_col, width, cell_format, options)

具有相同大纲级别的相邻行或列,会归为同一个大纲组。

options 参数是字典,可以包含下列键:

  • ‘hidden’

  • ‘level’

  • ‘collapsed’

可以按照下面的方式设置这些选项:

worksheet.set_row(0, 20, cell_format, {'hidden': True})

# Or use defaults for other properties and set the options only.
worksheet.set_row(0, None, None, {'hidden': True})

以下示例将第 1 至 4 行(索引从 0 开始)以及 B 至 G 列的大纲级别设置为 1。height 和 cell_format 参数使用默认值:

worksheet.set_row(1, None, None, {'level': 1})
worksheet.set_row(2, None, None, {'level': 1})
worksheet.set_row(3, None, None, {'level': 1})
worksheet.set_row(4, None, None, {'level': 1})

worksheet.set_column('B:G', None, None, {'level': 1})
_images/outline3.png

要折叠行或列,应为需要隐藏的行/列设置 hidden 标志,并为显示折叠加号“+”的那一行/列设置 collapsed 标志:

worksheet.set_row(1, None, None, {'level': 1, 'hidden': True})
worksheet.set_row(2, None, None, {'level': 1, 'hidden': True})
worksheet.set_row(3, None, None, {'level': 1, 'hidden': True})
worksheet.set_row(4, None, None, {'level': 1, 'hidden': True})
worksheet.set_row(5, None, None, {'collapsed': True})

worksheet.set_column('B:G', None, None, {'level': 1, 'hidden': True})
worksheet.set_column('H:H', None, None, {'collapsed': True})
_images/outline7.png

Excel 最多支持 7 个大纲级别,因此 level 参数的取值范围应满足 0 <= level <= 7。

_images/outline4.png

更完整的示例见“大纲与分组示例”和“折叠大纲与分组示例”。

还可以通过工作表的 outline_settings() 方法设置其他大纲属性。


原文:Working with Outlines and Grouping。作者/来源:John McNamara 与 XlsxWriter 文档贡献者。本文依据所列原文整理为中文,代码、命令与配置示例保留原文。

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容