- Python XlsxWriter 教程
- Python XlsxWriter - 主页
- Python XlsxWriter - 概述
- Python XlsxWriter - 环境设置
- Python XlsxWriter - 你好世界
- Python XlsxWriter - 重要类
- Python XlsxWriter - 单元格符号和范围
- Python XlsxWriter - 定义的名称
- Python XlsxWriter - 公式和函数
- Python XlsxWriter - 日期和时间
- Python XlsxWriter - 表格
- Python XlsxWriter - 应用过滤器
- Python XlsxWriter - 字体和颜色
- Python XlsxWriter - 数字格式
- Python XlsxWriter - 边框
- Python XlsxWriter - 超链接
- Python XlsxWriter - 条件格式
- Python XlsxWriter - 添加图表
- Python XlsxWriter - 图表格式
- Python XlsxWriter - 图表图例
- Python XlsxWriter - 条形图
- Python XlsxWriter - 折线图
- Python XlsxWriter - 饼图
- Python XlsxWriter - 迷你图
- Python XlsxWriter - 数据验证
- Python XlsxWriter - 大纲和分组
- Python XlsxWriter - 冻结和拆分窗格
- Python XlsxWriter - 隐藏/保护工作表
- Python XlsxWriter - 文本框
- Python XlsxWriter - 插入图像
- Python XlsxWriter - 页面设置
- Python XlsxWriter - 页眉和页脚
- Python XlsxWriter - 单元格注释
- Python XlsxWriter - 使用 Pandas
- Python XlsxWriter - VBA 宏
- Python XlsxWriter 有用资源
- Python XlsxWriter - 快速指南
- Python XlsxWriter - 有用的资源
- Python XlsxWriter - 讨论
Python XlsxWriter - 大纲和分组
在 Excel 中,您可以对特定列(或行)具有相同值的行或列进行分组,以便通过单击鼠标即可隐藏或显示它们。此功能称为大纲和分组。它有助于显示小计或摘要。这个功能可以在MS Excel软件的Data→Outline组中找到。
要使用此功能,数据范围中的所有行必须按一列中的值的排序顺序。假设我们有不同商品的销售数据。对项目名称范围进行排序后,单击“大纲”组中的“小计”选项。弹出如下对话框。
工作表显示按商品分类的销售额小计以及最后的总计。工作表的左侧显示大纲级别。原始数据位于第 3 级,小计位于第 2 级,总计位于第 1 级。
使用大纲和分组
要使用 XlsxWriter 执行此操作,我们需要使用set_row()方法的 level 属性。数据行设置为级别 2。
ws.set_row(row, None, None, {'level': 2})
小计的行的级别为 1。
ws.set_row(row, None, None, {'level': 1})
我们使用SUBTOTAL()函数来计算并显示一组销售数据的总和。
例子
完整的代码如下 -
import xlsxwriter wb = xlsxwriter.Workbook('hello.xlsx') ws = wb.add_worksheet() headings=['Item', 'Sales'] data=[ ['Apple', 45], ['Apple', 84], ['Apple', 125], ['Mango', 32], ['Mango', 65], ['Mango', 90], ['Oranges', 60], ['Oranges', 75], ['Oranges',100], ] ws.write_row('A1', headings) item='Apple' rownum=1 startrow=1 for row in data: if row[0]==item: ws.set_row(rownum, None, None, {'level': 2}) ws.write_row(rownum,0, row) rownum+=1 else: ws.set_row(rownum, None, None, {'level': 1}) ws.write(rownum, 0, item+' Subtotal') cellno='B{}:B{}'.format(startrow,rownum) print (cellno) ws.write(rownum,1,'=SUBTOTAL(9,'+cellno+')') # rownum+=1 item=data[rownum][0] rownum+=1 ws.set_row(rownum, None, None, {'level': 2}) ws.write_row(rownum,0, row) rownum+=1 startrow=rownum else: ws.set_row(rownum, None, None, {'level': 1}) ws.write(rownum, 0, item+' Subtotal') cellno='B{}:B{}'.format(startrow,rownum) ws.write(rownum,1,'=SUBTOTAL(9,'+cellno+')') rownum+=1 ws.write(rownum, 0, 'Grand Total') cellno='B{}:B{}'.format(1,rownum) ws.write(rownum,1,'=SUBTOTAL(9,'+cellno+')') wb.close()
输出
运行代码并使用 Excel 打开hello.xlsx。正如我们所看到的,轮廓显示在左侧。
在每个级别,减号表示可以折叠行并且仅显示小计行。
该图显示第 2 层的所有行均已折叠。现在,它在轮廓中显示加号,这意味着可以扩展数据行。如果单击级别 1 处的减号,则工作表上将仅保留总计。