C# создать лист excel с поздней привязкой
Использование winforms, C# FW4. 5 для открытия листа excel с поздней привязкой, например:
objExcel = CreateObject("Excel.Application")
Теперь я хочу использовать метод InvokeMember
, но я не знаю всех членов excel, которые я могу вызвать.
Например, я знаю, что могу вызвать его следующим образом: InvokeMember("Close",...
для закрытия excel, но где я могу найти список всех членов, которые я могу вызвать, и что каждый из них делает?
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-типе больше...
Расскажи мне еще
C# 4.0-новые возможности C# в .NET Framework 4, MSDN Mag июль 2010
Dynamic .NET-понимание ключевого слова Dynamic в языке C# 4, MSDN Mag февраль 2011