com interop: как использовать c # из Excel или Access

Я вижу в Интернете много информации о VSTO и автоматизации Excel из c #, но очень мало, чтобы начать работу по сборке ac #, чтобы сделать ее видимой из Excel.

Может кто-нибудь указать мне некоторую основную информацию, объясняющую, как создать интерфейс COM, GUIDS, ComVisible и т. Д.?

13.10.2009 13:19:29
3 ОТВЕТА
РЕШЕНИЕ

В основном все, что вам нужно сделать, это

  1. Сделайте вашу сборку COM видимой, используя соответствующий атрибут в диалоговом окне информации о версии сборки.
  2. Для каждого открытого класса добавьте следующий блок (см. [1]) кода над определением класса
  3. Зарегистрируйте DLL с помощью regasm.exeинструмента, найденного в папке установки .NET 2

Кроме того, обязательно добавьте описательное имя к имени и описанию приложения в диалоговом окне информации о версии сборки (они позже используются для выбора классов COM).

[1] Блок кода, добавляемый перед определением класса:

[ClassInterface(ClassInterfaceType.AutoDual)]
[ProgId("SomeNameHere")]
[ComVisible(true)]
[Guid("xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx")]

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

РЕДАКТИРОВАТЬ
Следует отметить, что у меня нет опыта работы с классами Excel и C # COM - я использую C # вместе с Microsoft Navision, который прекрасно работает так, как я описал выше.

2
13.10.2009 13:27:08

Есть много книг, которые могут помочь вам. "Pro C # 2008" от Wrox имеет большую главу по этому вопросу.

Кроме того, вот статья в блоге MSDN о COM Visible to Excel.

2
13.10.2009 13:25:02

Вместо того, чтобы идти по COM-маршруту, гораздо проще (и меньше проблем с установкой) использовать что-то вроде ExcelDNA . Это позволяет вам писать XLL в .Net, которые не требуют регистрации. Он также с открытым исходным кодом и очень хорошо поддерживается сообществом.

1
13.10.2009 14:04:38