Python XlsxWriter - 冻结和拆分窗格

freeze_panes() 方法

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

该方法需要参数rowcol 来指定拆分的位置。 应该注意的是,拆分是在单元格的顶部或左侧指定的,并且该方法使用基于 0 的索引。 如果您不想垂直或水平分割,则可以将 row 和 col 参数之一设置为 0。

示例

以下示例中的工作表显示每行中列号的递增倍数,以便每个单元格显示行号和列号的乘积。

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

拆分窗格