在OpenXml SDK 2.0 for Excel文档中冻结窗格

我正在使用OpenXml生成一个Excel工作簿,并且已经在http://msdn.microsoft.com/en-us/library/cc850837.aspx

如果我可以冻结顶部窗格,这将是非常有用的,但是我找不到一个方法来做到这一点。 我意识到我可以做到这一点,如果我使用http://closedxml.codeplex.com/,但现在我想坚持OpenXml的SDK

有任何想法吗?

我试图解决同样的问题,并最终打开了Open XML SDK 2.0生产力工具,并使用Compare Files...function来比较两个电子表格,一个与冻结窗格和一个没有。

当我这样做的时候,我被引导到基本上是这样的代码:

 WorkbookPart wbp = doc.WorkbookPart; WorksheetPart wsp = wbp.WorksheetParts.First(); SheetViews sheetviews = wsp.Worksheet.GetFirstChild<SheetViews>(); SheetView sv = sheetviews.GetFirstChild<SheetView>(); Selection selection = sv.GetFirstChild<Selection>(); Pane pane = new Pane(){ VerticalSplit = 1D, TopLeftCell = "A2", ActivePane = PaneValues.BottomLeft, State = PaneStateValues.Frozen }; sv.InsertBefore(pane,selection); selection.Pane = PaneValues.BottomLeft; 

我把这个添加到我的程序中,似乎有窍门。

您也可以添加select:

 WorkbookPart wbp = doc.WorkbookPart; WorksheetPart wsp = wbp.WorksheetParts.First(); SheetViews sheetViews = wsp.Worksheet.GetFirstChild<SheetViews>(); SheetView sheetView = sheetViews.GetFirstChild<SheetView>(); Selection selection1 = new Selection() { Pane = PaneValues.BottomLeft }; Pane pane1 = new Pane() { VerticalSplit = 1D, TopLeftCell = "A2", ActivePane = PaneValues.BottomLeft, State = PaneStateValues.Frozen }; sheetView.Append(pane1); sheetView.Append(selection1);