我有这个代码可以正常工作,将FreezePane添加到第7行第3页第3页(从左边算起):
private void FreezePane(int rowNum, int colNum)
{
Range cellToFreeze = (Range)_xlSheet.Cells[rowNum, colNum];
cellToFreeze.Activate();
cellToFreeze.Application.ActiveWindow.FreezePanes = true;
}
添加另外两张纸后(第二张纸包含数据作为数据透视表的来源,第三张纸包含数据透视表),我想在第三张/数据透视表表的同一位置添加一个冷冻窗格,所以我试过这个:
private void FreezePanePivotTable(int rowToFreeze, int colToFreeze)
{
Range pivotTableCellToFreeze = (Range)_xlPivotTableSheet.Cells[rowToFreeze, colToFreeze];
pivotTableCellToFreeze.Activate();
pivotTableCellToFreeze.Application.ActiveWindow.FreezePanes = true;
}
然而,崩溃与“ Range类的激活方法失败异常来源:Microsoft Office Excel 异常StackTrace:在System.RuntimeType.ForwardCallToInvokeMember(... “
所以我想,“也许你只能在工作簿中有一个冷冻窗格”,并尝试只调用新方法(让第一张纸解冻),我得到这个看似奇怪的错误信息:“无法设置Font类的Size属性“
发生此异常的地方在 second 表中 - 表3 /数据透视表的源数据!为什么突然设置字体大小会导致问题?第3418行是下面的最后一行:
var itemCodeLabelCell = _xlPivotDataSheet.Cells[1, 1];
itemCodeLabelCell.Value2 = "ItemCode";
itemCodeLabelCell.Style.WrapText = false;
itemCodeLabelCell.Style.Font.Size = 12;
在主(第一)表和其他表上添加freezepanes是否有不同的规则,或者FreezePanes和PivotTables不能共存,或者是什么?
答案 0 :(得分:1)
SomeSheet.SomeRange.Activate()
失败,因此可能是Range类的" Activate方法失败"。
您必须先激活工作表:
_xlPivotTableSheet.Activate();
pivotTableCellToFreeze.Activate();