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()

输出

然后,我们冻结顶行窗格。因此,打开工作表后,如果单元格指针向下滚动,顶行始终保留在工作表上。

Top Row

类似地,我们可以使第一列保持静止。

# Freeze pane on the first column.
worksheet.freeze_panes(0, 1)

以下屏幕截图显示列 A即使我们向右滚动也始终可见。

Column A

通过将 freeze_panes() 方法中的 row 和 column 参数设置为 1,顶部行和最左侧列都将冻结。

# Freeze pane on the first row, first column.
worksheet.freeze_panes(1, 1)

打开生成的工作表并四处滚动单元格光标。您会发现,已格式化为粗体并带有背景色的顶行和最左侧列中的行号和列号始终可见。

Freeze Panes

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

Split Panes
广告

© . All rights reserved.