为什么 FreezePane 仅适用于第一个 sheet?

Why does FreezePane only work on the first sheet?

我的这段代码运行良好,将 FreezePane 添加到第 7 行第 3 列 sheet(从左数起):

private void FreezePane(int rowNum, int colNum)
{
    Range cellToFreeze = (Range)_xlSheet.Cells[rowNum, colNum];
    cellToFreeze.Activate();
    cellToFreeze.Application.ActiveWindow.FreezePanes = true;
}

添加另外一对 sheet 之后(第二个 sheet 包含数据作为枢轴 table 的来源,第三个 sheet 包含枢轴 table), 我想在 third/pivot Table sheet 的相同位置添加一个 freezepane,所以我尝试了这个:

private void FreezePanePivotTable(int rowToFreeze, int colToFreeze)
{
    Range pivotTableCellToFreeze = (Range)_xlPivotTableSheet.Cells[rowToFreeze, colToFreeze];
    pivotTableCellToFreeze.Activate();
    pivotTableCellToFreeze.Application.ActiveWindow.FreezePanes = true;
} 

尽管如此,它因“范围 class 的激活方法失败异常来源:Microsoft Office Excel 而崩溃 异常 StackTrace:在 System.RuntimeType.ForwardCallToInvokeMember(..."

所以我想,"maybe you can only have one frozen pane in a workbook" 并尝试只调用新方法(让第一个 sheet 未冻结),我得到了这个看似奇怪的错误消息:“无法设置字体的大小 属性class"

发生此异常的位置是 second sheet - sheet 3/PivotTable [=38] 的源数据=]!为什么突然设置字体大小会出现问题?第3418行是下面的最后一行:

var itemCodeLabelCell = _xlPivotDataSheet.Cells[1, 1];
itemCodeLabelCell.Value2 = "ItemCode";
itemCodeLabelCell.Style.WrapText = false;
itemCodeLabelCell.Style.Font.Size = 12;

是否有不同的规则适用于在主要(第一个)sheet 和其他上添加冻结窗格,或者冻结窗格和 PivotTables 不能共存,还是什么?

SomeSheet.SomeRange.Activate() 如果 SomeSheet 尚未激活则失败,因此可能 "Activate method of Range class failed".

您必须先激活 sheet:

_xlPivotTableSheet.Activate();
pivotTableCellToFreeze.Activate();