2017-01-05 3 views
0

Ich benutze die ExcelDNA-Bibliothek, die eine Kombination von Excel C-API und COM-Schnittstelle zu verwenden scheint.Was ist der Unterschied zwischen, wie Excel die COM-API im Vergleich zur C-API darstellt

Wie unterscheiden sich diese Schnittstellen in Bezug auf die Implementierung durch Excel? Von der Microsoft-Website (https://msdn.microsoft.com/en-us/library/office/bb687829.aspx):

" der Benutzeroberfläche Excel Anpassen

Für viele Versionen von Excel hat die C-API die beste Wahl für die Anpassung der Benutzeroberfläche nicht gewesen VBA überlegen Zugriff hat. Objekte und Ereignisse zu Excel zu machen. Die in Excel 2007 eingeführte Benutzeroberfläche unterscheidet sich erheblich von früheren Versionen, sowohl in der Darstellung als auch in der zugrunde liegenden Technologie. Sie können diese Schnittstelle am besten mit verwalteten Code-Ressourcen anpassen. "

Was macht COM besser geeignet für die Bearbeitung der Benutzeroberfläche von Excel als die C-API?

Antwort

1

Es ist einfacher und schneller zu schreiben Benutzeroberflächen-Sachen mit VBA oder .NET und nicht C oder C++.

Die COM-Schnittstelle hat Zugriff auf eine viel größere Menge von Excel-Objekten und -Ereignissen als die C-API-Schnittstelle, aber die C-API wird zum Schreiben von UDFs bevorzugt, da sie wesentlich besser als COM ist und Dinge wie Multi-Threading erlaubt. Async, RTD, Cluster usw., die COM nicht bietet.

Beachten Sie, dass die Verwendung von COM aus ExcelDNA die Verwendung von COM-INTEROP, die von Natur aus langsam ist, bedeutet.

+0

Ich denke, dass ExcelDNA COM-INTEROP für Fluid Ribbon Wechselwirkungen verwendet, und die C-API für VBA. Wenn das stimmt, wäre das immer noch ein Problem? –

+1

Excel-DNA funktioniert nicht mit VBA. Excel DNA ermöglicht Ihnen die Verwendung von C-API und COM-Interop in derselben Lösung. Was Sie verwenden, hängt sowohl von der Auswahl als auch von den verschiedenen Funktionen der Schnittstellen ab. Normalerweise verwenden Sie ausschließlich die C-API für den gesamten UDF-Code und ausschließlich COM-Interop für alles andere. –

0

Ich stimme mit Charles in Bezug auf die Leichtigkeit und niedrigere Gesamtbetriebskosten für die Erstellung von UI-Komponenten überein und die schnelle Entwicklung neuer Funktionen mit C# und Excel DNA (oder Addin Express um fair zu sein).

Bevor Sie erklären, dass die Leistung von größter Bedeutung ist, legen Sie einige Erwartungen fest und messen Sie die betreffenden Berechnungen oder Ereignisse. Wenn es einen wirklich leistungsabhängigen Abschnitt gibt, isolieren Sie ihn und schreiben Sie dann verwalteten C++ - Code, der dann in die in C# oder VB.NET geschriebene Benutzeroberfläche integriert werden kann.

Auch nur eine kleine Korrektur zu Charles 'Kommentar bezüglich Excel DNA und VBA; sie arbeiten zusammen. Ein paar Beispiele finden Sie unter:

Verwandte Themen