#.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″ /> и я не смог использовать вышеуказанный метод. Это выдает мне ошибку недопустимого индекса.