2011-06-21 33 views
5

tôi là tạo ra một bảng tính Excel sử dụng OpenXML và đã theo các ví dụ tại http://msdn.microsoft.com/en-us/library/cc850837.aspxFreeze Panes trong OpenXML SDK 2.0 cho Excel tài liệu

Nó sẽ thực sự hữu ích nếu tôi có thể đóng băng panes hàng đầu, nhưng tôi có thể' t tìm cách để làm điều này. Tôi nhận ra rằng tôi có thể làm điều này nếu tôi sử dụng http://closedxml.codeplex.com/ nhưng hiện tại tôi muốn gắn bó với OpenXml SDK

Bất kỳ ý tưởng nào?

Trả lời

9

Tôi đang cố gắng giải quyết cùng một vấn đề và kết thúc mở Công cụ năng suất mở XML SDK 2.0 và sử dụng tính năng Compare Files... để so sánh hai bảng tính, một bảng có ngăn đông lạnh và một không có.

Khi tôi đã làm điều đó, tôi đã dẫn đến mã mà nhìn cơ bản như thế này:

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; 

tôi thêm này để chương trình của tôi và nó dường như làm các trick.

+2

Tôi đã sử dụng đoạn code trên và đã tạo ra một ngoại lệ. Hóa ra rằng tôi đã không thực hiện một lựa chọn thực tế trong bảng tính tôi đã sử dụng, do đó, đối tượng lựa chọn là một tham chiếu null. Chọn "A2" đã cho tôi thông qua. – Steve

+1

Bạn tạo bảng tính như thế nào? Tôi đang tạo của tôi trong bộ nhớ và khi tôi đi để đóng băng một hàng, bằng cách sử dụng mã ở trên tôi nhận được ngoại lệ sheetviews null. – eaglei22

7

Bạn có thể thêm các lựa chọn cũng như:

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); 
Các vấn đề liên quan