2011-06-21 16 views

cevap

9

Aynı sorunu çözmeye çalışıyordum ve Open XML SDK 2.0 Üretkenlik Aracı'nı açarak ve iki adet tabloyu, bir tanesi dondurulmuş bölmelerle ve diğeriyle karşılaştırmak için Compare Files... özelliğini kullanarak sona erdi.

ben böyle temelde görünüyordu koduna önderlik etti, o ne zaman:

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; 

benim programa bu eklenmiş ve hile yapmak gibiydi.

+2

. Kullandığım elektronik sayfada gerçek bir seçim yapmadığımı ortaya çıkarır, bu yüzden seçim nesnesi boş bir başvuruydı. "A2" yi seçtim. – Steve

+1

Çalışma sayfanızı nasıl oluşturuyorsunuz? Ben memorystream benim madeni oluşturuyorum ve bir satır donmak için gittiğimde, yukarıdaki kodu kullanarak sayfalar null istisnası olsun. – eaglei22

7

Siz de Seçim ekleyebilirsiniz: Yukarıdaki kodu kullanarak ve bir özel durum yaratmakta olduğu

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