Когда я использовал код, предоставленный в других ответах, я продолжал получать нулевую ошибку для SheetViews.Я использовал Инструменты повышения производительности SDK для просмотра кода для документа Excel с замороженной панелью, что помогло мне создать приведенный ниже код.Вместо использования метода GetFirstChild мне пришлось создать новые экземпляры классов SheetViews и SheetView и добавить их.
Вот код.
WorkbookPart workbookPart = document.AddWorkbookPart();
workbookPart.Workbook = new Workbook();
WorksheetPart worksheetPart = workbookPart.AddNewPart<WorksheetPart>();
worksheetPart.Worksheet = new Worksheet();
SheetViews sheetViews = new SheetViews();
SheetView sheetView = new SheetView() { TabSelected = true, WorkbookViewId = (UInt32Value)0U };
Pane pane = new Pane() { ActivePane = PaneValues.BottomLeft, State = PaneStateValues.Frozen, TopLeftCell = "A2", VerticalSplit = 1D };
Selection selection = new Selection() { Pane = PaneValues.BottomLeft };
sheetView.Append(pane);
sheetView.Append(selection);
sheetViews.Append(sheetView);
worksheetPart.Worksheet.Append(sheetViews);
Еще одно замечание: при созданииSheetView, вы должны включить значения TabSelected и WorkbookViewId, в противном случае вы получите сообщение об ошибке при открытии файла «Мы обнаружили проблему с некоторым содержимым в ....»
Кроме того, для всех, кто хочетзаморозить первый столбец, вместо первого ряда, вот пример.
var sheetViews = new SheetViews();
var sheetView = new SheetView() { TabSelected = true, WorkbookViewId = (UInt32Value)0U };
var pane = new Pane() { ActivePane = PaneValues.TopRight, HorizontalSplit = 1D, State = PaneStateValues.Frozen, TopLeftCell = "B1" };
var selection = new Selection() { Pane = PaneValues.TopRight };
sheetView.Append(pane);
sheetView.Append(selection);
sheetViews.Append(sheetView);