Как получить лист по имени в .NET?

#.net #excel

#.net #excel

Вопрос:

Будучи вынужденным перейти из NPOI в microsoft interop, я должен выполнить задачу поиска определенного листа в workbook, а затем выполнить итерацию по каждой его строке.

В NPOI это было бы просто workbook.GetSheet(sheetName); . Что было бы эквивалентно этому в Microsoft interop?

Ответ №1:

Используйте workbook.Sheets[sheetName];

Полный рабочий пример:

 using Microsoft.Office.Interop.Excel;

class Program
{
    static void Main(string[] args)
    {
        var excelApplication = new Application();
        excelApplication.Visible = true;
        excelApplication.SheetsInNewWorkbook = 3;
        var workbook = excelApplication.Workbooks.Add();
        var worksheet = workbook.Sheets["Sheet2"];         //<--- desired method
        worksheet.Activate();
    }
}
  

Комментарии:

1. Вы уверены? Я почти уверен, что вы можете просто сделать workbook.Sheets["Sheet2"] .

2. @JeffYates, Олух! 1 Ваше право … нет необходимости использовать метод расширения. Обновил свой пост, чтобы исправить это.

3. Выглядит красиво, но почему метод Add()?

4. @Nordvind, поскольку фрагмент не открывает книгу Excel, а создает новую, таким образом, он добавляет ее в приложение Excel.

5. Я использую <идентификатор пакета =»Microsoft. Офис. Взаимодействие. Excel» version =»15.0.4795.1000″ targetFramework =»net45″ /> и я не смог использовать вышеуказанный метод. Это выдает мне ошибку недопустимого индекса.