- Python XlsxWriter 教程
- Python XlsxWriter - 首页
- Python XlsxWriter - 概述
- Python XlsxWriter - 环境设置
- Python XlsxWriter - Hello World
- 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 软件的**数据→大纲**组中找到。
要使用此功能,数据范围必须所有行都按一列的值排序。假设我们有不同项目的销售数据。在按项目名称对范围排序后,单击大纲组中的“小计”选项。将弹出以下对话框。
工作表显示项目的销售小计,最后是总计。在工作表的左侧,显示了大纲级别。原始数据位于级别 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**处的减号,则工作表上将只剩下总计。
广告