Python XlsxWriter 大纲和分组
在 Excel 中,你可以对具有特定列(或行)值的行或列进行分组,以便通过单击鼠标来隐藏或显示它们。此功能称为 大纲和分组 .它有助于显示小计或摘要。此功能可以在 MS excel 软件中找到 数据→概要 group.
要使用此功能,数据范围的所有行都必须按一列中值的排序顺序排列。假设我们有不同商品的销售数据。对项目名称的范围进行排序后,单击大纲组中的小计选项。弹出以下对话框。
工作表显示按项目分类的销售额小计,最后显示总计。在工作表的左侧,显示了大纲级别。原始数据在第 3 级,小计在第 2 级,总计在第 1 级。
使用大纲和分组
要使用 XlsxWriter 做到这一点,我们需要使用 设置行() 方法。数据行设置在级别 2。
ws.set_row(row, None, None, {'level': 2})
小计的行具有级别 1。
ws.set_row(row, None, None, {'level': 1})
We use 小计() 计算并显示一组销售数字的总和的功能。
例子
完整代码如下:
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()
运行代码并打开 你好.xlsx 使用 Excel。如我们所见,轮廓显示在左侧。
在每个级别,减号表示可以折叠行并且只显示小计行。
该图显示了所有行 level 2 已经倒塌。它现在在大纲中显示加号,这意味着可以扩展数据行。如果你单击减号 level 1 ,只有总计将保留在工作表上。