2014-01-30 3 views
4

Я работаю над созданием отчета MS Excel 2013, где все рабочие листы в рабочей книге должны иметь панель замораживания в столбце 6 и строке 1. Я искал в Google, но не нашел решения, как для замораживания панель, рабочая книга должна быть активной. Я много пробовал, но не добился успеха. Я буду очень признателен, если кто-то может мне помочь.Стоп-листы в нескольких листах C#

Excel.Application excel = new Excel.Application(); 
Excel.Workbook workbook = excel.Workbooks.Open("filelocation"); 

foreach (Excel.Worksheet ws in workbook.Worksheets) 
{ 
    ws.Application.ActiveWindow.SplitColumn = 6; 
    ws.Application.ActiveWindow.SplitRow = 1; 
    ws.Application.ActiveWindow.FreezePanes = true; 
} 

excel.Visible = true; 

ответ

6

Надеюсь, что это поможет другим. Я использовал ClosedXML библиотеку для Excel и после создания каждого листа я использовал

worksheet.SheetView.Freeze(1,6); 

Это замораживает ряд 1, Col 6. Вы можете заморозить любую строку/столбец. Это ссылка на ClosedXML. Это широко поддерживается и очень хорошая документация.

1

Чтобы заморозить панели на каждом листе, вам необходимо изменить цикл for, чтобы добавить строку, чтобы активировать текущий лист перед установкой других свойств. Вот мое решение:

Excel.Application excel = new Excel.Application(); 
Excel.Workbook workbook = excel.Workbooks.Open("filelocation"); 

foreach (Excel.Worksheet ws in workbook.Worksheets) 
{ 
    ws.Activate(); 
    ws.Application.ActiveWindow.SplitColumn = 6; 
    ws.Application.ActiveWindow.SplitRow = 1; 
    ws.Application.ActiveWindow.FreezePanes = true; 
} 

excel.Visible = true; 
Смежные вопросы