Python XlsxWriter - 冻结和拆分窗格


freeze_panes() 方法

XlsxWriter 库中 Worksheet 对象的freeze_panes ()方法将工作表划分为水平或垂直区域(称为窗格),并“冻结”其中一个或两个窗格,这样,如果我们向下滚动或向下滚动或向右滚动,窗格(分别为顶部或左侧)保持静止。

该方法需要参数rowcol来指定分割的位置。应该注意的是,分割是在单元格的顶部或左侧指定的,并且该方法使用基于零的索引。如果您不想垂直或水平分割,可以将 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 列仍然可见。

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 列被分成不同的窗格。

分割窗格