Изменение листа, отображаемого с помощью ClosedXML

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

wb.Worksheet(1).Select();

Это выбирает все ячейки на листе, но не меняет вид обратно.

wb.Worksheet(1).Cells(1,1).Value = wb.Worksheet(1).Cells(1,1).Value

кажется, устанавливает значение, но снова не меняет вид.

Я попытался скрыть другие листы в надежде, что он автоматически выберет видимые листы, но это, похоже, не работает. Какие-либо предложения?


person AndrewK    schedule 03.03.2016    source источник
comment
вам нужно посмотреть на следующее wb.ActiveTab выполнить поиск в Google по следующему How to set active sheet with Open XML   -  person MethodMan    schedule 04.03.2016
comment
ааа, или в случае с ClosedXML, SetTabActive()   -  person AndrewK    schedule 04.03.2016


Ответы (2)


Используя ClosedXML для установки активного листа на первый рабочий лист, можно использовать этот код:

wb.Worksheet(1).SetTabActive();
person AndrewK    schedule 03.03.2016

Я обнаружил, что решение Эндрю К. не отменяет выбор ранее выбранных вкладок. Я написал это расширение, чтобы удовлетворить и это требование:

public static class Extensions
{
    public static void SetActiveSheet(this XLWorkbook workbook, IXLWorksheet sheetToSetActive)
    {
        foreach (var sheet in workbook.Worksheets)
        {
            var isCurrentSheet = sheet.Equals(sheetToSetActive);
            sheet.SetTabActive(isCurrentSheet);
            sheet.SetTabSelected(isCurrentSheet);
        }
    }
}

Используйте его следующим образом:

var sheetToSetActive = wb.Worksheet(1);
wb.SetActiveSheet(sheetToSetActive);
person Nick Allan    schedule 13.06.2017