Excel Interop - как запустить код надстройки для Excel com - PullRequest
0 голосов
/ 26 июля 2011

У меня есть надстройка Excel, которую я создал. Что я хочу сделать, это открыть документ Excel в C # (ASP.NET) и запустить некоторый код в надстройке, а затем вернуть документ Excel в виде HTML-страницы.

Можно ли это сделать?

1 Ответ

0 голосов
/ 01 сентября 2011

В надстройке Com я должен был добавить:

public partial class ThisAddIn
{
    ...
    protected override object RequestComAddInAutomationService()
    {
         if (addinUtilities == null)
         {
              addinUtilities = new AddinUtilities();
         }
         return addinUtilities;
    }
...
}

Вы должны вернуть объект из этой функции, позже этот объект можно использовать во взаимодействии, как показано во фрагменте кода ниже. добавить любую функциональность, которую вы хотите выставить этому объекту.

Затем используйте надстройку следующим образом:

Application app = new Application();
var myAddin = app.COMAddIns;
var count = myAddin.Count;
COMAddIn addin;
for (int i = 1; i <= count ; i++) // not zero indexed
{
    addin = myAddin.Item(i);
    var ob = addin.Object;
    var str = addin.ProgId;
    if (ob != null)
    {
         ob.RunQuery(ws);
    }
}

Как вы можете видеть, я не нашел хорошего способа определить мою надстройку (если кто-нибудь знает одну, которую я хотел бы услышать), но вы можете перебрать их и проверить progId.

addin.Object - это объект, который мы возвратили из RequestComAddInAutomationService.

...