设置窗格

  1. func (f *File) SetPanes(sheet string, panes *Panes) error

通过给定的工作表名称和窗格样式参数设置冻结窗格或拆分窗格。

ActivePane 定义了活动窗格,下表为该属性的可选值:

枚举值描述
bottomLeft (Bottom Left Pane)当应用垂直和水平分割时,位于左下方的窗格。

此值也适用于仅应用了水平分割的情况,将窗格分为上下两个区域。在这种情况下,该值指定底部窗格。
bottomRight (Bottom Right Pane)当垂直和水平时,位于底部右侧的窗格。
topLeft (Top Left Pane)当应用垂直和水平分割时,位于左上方的窗格。

此值也适用于仅应用了水平分割的情况,将窗格分为上下两个区域。在这种情况下,该值指定顶部窗格。

此值也适用于仅应用垂直分割的情况,将窗格分割为右侧和左侧区域。在这种情况下,该值指定左侧窗格。
topRight (Top Right Pane)当应用垂直和水平分割时,位于右上方窗格。

此值也适用于仅应用垂直分割的情况,将窗格分割为右侧和左侧区域。在这种情况下,该值指定右侧窗格。

窗格状态类型仅限于下表中当前列出的受支持的值:

枚举值描述
frozen (Frozen)窗格被冻结,但并不分裂。在此状态下,当窗格被解除冻结然后再次解冻时,会生成单个窗格,而不会被分割。

在这种状态下,分割条不可调节。
split (Split)窗格被分裂,但并不冻结。在此状态下,用户可以调整分割条。

XSplit - 水平分割点的位置。如果窗格冻结,则此值用于设置顶部窗格中可见的列数。

YSplit - 垂直分割点的位置。如果窗格冻结,则此值用于设置左侧窗格中可见的行数。该属性的可能值由 W3C XML Schema double 数据类型定义。

TopLeftCell - 处于“从左到右”模式时,右下方窗格中左上角可见单元格的位置。

SQRef - 参考单元格坐标区域。可以是非连续的一组单元格坐标区域。

例1,在名为 Sheet1 的工作表上冻结列 A 并设置活动单元格 Sheet1!K16

冻结列

  1. err := f.SetPanes("Sheet1", &excelize.Panes{
  2. Freeze: true,
  3. XSplit: 1,
  4. TopLeftCell: "B1",
  5. ActivePane: "topRight",
  6. Selection: []excelize.Selection{
  7. {SQRef: "K16", ActiveCell: "K16", Pane: "topRight"},
  8. },
  9. })

例2,在名为 Sheet1 的工作表上冻结第 1 到第 9 行,并设置活动单元格区域 Sheet1!A11:XFD11

冻结列并设置活动单元格区域

  1. err := f.SetPanes("Sheet1", &excelize.Panes{
  2. Freeze: true,
  3. YSplit: 9,
  4. TopLeftCell: "A34",
  5. ActivePane: "bottomLeft",
  6. Selection: []excelize.Selection{
  7. {SQRef: "A11:XFD11", ActiveCell: "A11", Pane: "bottomLeft"},
  8. },
  9. })

例3,在名为 Sheet1 的工作表上创建拆分窗格,并设置活动单元格 Sheet1!J60

创建拆分窗格

  1. err := f.SetPanes("Sheet1", &excelize.Panes{
  2. Split: true,
  3. XSplit: 3270,
  4. YSplit: 1800,
  5. TopLeftCell: "N57",
  6. ActivePane: "bottomLeft",
  7. Selection: []excelize.Selection{
  8. {SQRef: "I36", ActiveCell: "I36"},
  9. {SQRef: "G33", ActiveCell: "G33", Pane: "topRight"},
  10. {SQRef: "J60", ActiveCell: "J60", Pane: "bottomLeft"},
  11. {SQRef: "O60", ActiveCell: "O60", Pane: "bottomRight"},
  12. },
  13. })

例4,解冻并删除名为 Sheet1 上的所有窗格:

  1. err := f.SetPanes("Sheet1", &excelize.Panes{Freeze: false, Split: false})