Python XlsxWriter – 冻结和分割窗格
freeze_panes()方法
XlsxWriter库中工作表对象的 freeze_panes() 方法将工作表分成水平或垂直的区域,称为panes,并 “冻结 “这些panes中的一个或两个,这样,如果我们向下滚动或向右滚动,panes(分别是顶部或左侧)保持静止。
该方法需要参数 row 和 col 来指定分割的位置。应该注意的是,分割是在单元格的顶部或左侧指定的,该方法使用基于零的索引。如果你不想要垂直或水平分割,你可以将行和列的参数之一设置为零。
例子
下面的例子中的工作表显示了每一行中列号的递增倍数,因此每个单元格都显示行号和列号的乘积。
import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
worksheet = wb.add_worksheet()
format1=wb.add_format({'bg_color':'#D9D9D9', 'bold':True})
for col in range(0, 15):
worksheet.write(0, col, col+1, format1)
for row in range(1, 51):
for col in range(0,15):
if col==0:
worksheet.write(row,col,(col+1)*(row + 1), format1)
else:
worksheet.write(row,col,(col+1)*(row + 1))
# Freeze pane on the top row.
worksheet.freeze_panes(1, 0)
wb.close()
输出
然后,我们冻结了 顶行窗格。 因此,在打开工作表后,如果单元格指针向下滚动,顶行始终保持在工作表上。
同样地,我们可以使 第一列 固定下来。
# Freeze pane on the first column.
worksheet.freeze_panes(0, 1)
下面的截图显示,即使我们向右滚动, A列 仍然可见。
通过将freeze_panes()方法中的行和列参数设置为1,最上面的一行和最左边的一列都将被冻结。
# Freeze pane on the first row, first column.
worksheet.freeze_panes(1, 1)
打开生成的工作表,滚动单元格光标。你会发现,最上面一行和最左边一列的行号和列号,已经用粗体和背景颜色进行了格式化,始终可见。
split_panes()方法
split_panes() 方法也将工作表划分为水平或垂直区域,称为窗格,但与 freeze_panes() 方法不同的是,窗格之间的分割对用户来说是可见的,每个窗格都有自己的滚动条。
该方法有参数 “y “和 “x”,用来指定分割的垂直和水平位置。这些参数是以Excel使用的行高和列宽为单位。行高和列宽的默认值为每行15,每列8.43。
如果你不想要垂直或水平分割,你可以将 “y “和 “x “参数中的一个设置为零。
为了在第10行和第7列创建一个分割, split_panes() 方法的使用方法如下
worksheet.split_panes(15*10, 8.43*7)
你可以在工作表的第10行和第7列找到这些分割器。你可以在垂直分割器的左边和右边以及水平分割器的顶部和底部滚动窗格。注意,其他窗格将保持不变。
例子
下面是创建分割器的完整代码,下面显示的是输出结果
import xlsxwriter
wb = xlsxwriter.Workbook('hello.xlsx')
worksheet = wb.add_worksheet()
format1=wb.add_format({'bg_color':'#D9D9D9', 'bold':True})
for col in range(0, 15):
worksheet.write(0, col, col+1, format1)
for row in range(1, 51):
for col in range(0,15):
if col==0:
worksheet.write(row,col,(col+1)*(row + 1), format1)
else:
worksheet.write(row,col,(col+1)*(row + 1))
worksheet.split_panes(15*10, 8.43*7)
wb.close()
输出
运行代码并使用Excel打开 hello.xlsx 。我们可以看到,工作表在第10行和第7列被分割成不同的窗格。