C# создать лист excel с поздней привязкой


Использование winforms, C# FW4. 5 для открытия листа excel с поздней привязкой, например:

objExcel = CreateObject("Excel.Application") 

Теперь я хочу использовать метод InvokeMember, но я не знаю всех членов excel, которые я могу вызвать. Например, я знаю, что могу вызвать его следующим образом: InvokeMember("Close",... для закрытия excel, но где я могу найти список всех членов, которые я могу вызвать, и что каждый из них делает?

1 2

1 ответ:

Поздняя привязка

Использование winforms, C# FW4. 5 для открытия листа excel с поздней привязкой, например:

Если вы должны использовать позднюю привязку, использование ключевого слова c# 4.0 dynamic намного проще, чем InvokeMember, хотя оно не покажет вам, какие методы вы можете вызвать раньше времени.

Проверьте следующий код, который использует позднюю привязку через ключевое слово dynamic. Обратите внимание, как Visual Studio позволяет мне вводить любую старую вещь. Хотя автозавершение для конечных членов не является доступный, он показывает членов для элементов, которые я уже использовал. Я не буду знать до времени выполнения, правильно ли я это сделал (таково ограничение позднего связывания таким образом).

Введите описание изображения здесь

C# теперь поддерживает динамическую позднюю привязку. Язык всегда был строго типизирован, и он продолжает оставаться таковым в версии 4.0. Microsoft считает, что это делает C# простым в использовании, быстрым и подходящим для всей работы, которую выполняют программисты .NET. Но бывают моменты, когда вам это необходимо. взаимодействие с системами, не основанными на .NET.... динамическое ключевое слово в C# является ответом на проблемы этих других подходов Расскажи мне еще

...и более конкретно:

Сценарий COM-взаимодействия, на который команда C# специально нацелилась в выпуске C# 4, был запрограммирован против приложений Microsoft Office, таких как Word и Excel. Цель состояла в том, чтобы сделать эту задачу такой же простой и естественной в C#, как и всегда был в Visual Basic . Расскажи мне еще что-нибудь...

Ранняя граница

OP:

Теперь я хочу использовать метод InvokeMember, но я не знаю всех членов excel, которые я могу вызвать

Хотя поздняя привязка хороша, даже с dynamic, Мне нравится ранняя привязка. Чтобы получить список методов, это гораздо проще и безопасно использовать раннее связывание через добавление Майкрософт.Офис.Взаимодействие.Excel для вашего проекта.

Рано привязка:

var application = new Microsoft.Office.Interop.Excel.Application();
application.Visible = true;
application.ShowWindowsInTaskbar = true;

Вот он в VS:

Введите описание изображения здесь

C# 4 Доброта

C# 4 приносит с собой некоторые вещи, которые вы увидите только при работе с COM, например индексированные свойства - что-то невозможное в типах c#.

Вы не можете определить типы В C#, которые имеют индексированные свойства, но вы можете использовать их при условии, что вы делаете это на COM-типе Подробнее

Некоторые более мелкие языковые функции в C# 4.0 поддерживаются только при написании кода для COM-интерфейса API

Например

ws.Range["A1", "B3"].Value = 123; 

...это намного проще, чем pre-c# 4:

ws.get_Range("A1", "B3").Value2 = 123;

C# 4.0 поддерживает индексированные свойства для типов com-взаимодействия. Вы не можете определить типы В C#, которые имеют индексированные свойства, но вы можете использовать их при условии, что вы делаете это на COM-типе больше...

Расскажи мне еще

Введите описание изображения здесь