2017-01-05 1 views
0

Excel의 C-API와 COM 인터페이스의 조합을 사용하는 ExcelDNA 라이브러리를 사용하고 있습니다.Excel에서 COM API를 C API와 비교하여 노출하는 방법의 차이점

이러한 인터페이스는 Excel의 구현 측면에서 어떻게 다른가요? 마이크로 소프트 사이트 (https://msdn.microsoft.com/en-us/library/office/bb687829.aspx)에서 :

는 " 엑셀의 여러 버전의 엑셀 사용자 인터페이스

사용자 정의는 C API는 사용자 인터페이스를 사용자 지정하기위한 최선의 선택되지 않았습니다 VBA 우수한 액세스 할 수 있습니다. Excel 2007에 도입 된 사용자 인터페이스는 모양과 기본 기술 모두에서 이전 버전과 크게 다르며 관리되는 코드 리소스를 사용하여이 인터페이스를 가장 잘 사용자 지정할 수 있습니다. "

COM이 C-API보다 Excel의 UI를 편집하는 데 더 적합한 이유는 무엇입니까?

답변

1

C 또는 C++ 대신 VBA 또는 .NET을 사용하여 사용자 인터페이스를 작성하는 것이 쉽고 빠릅니다.

COM 인터페이스는 C-API 인터페이스보다 훨씬 풍부한 Excel 개체 및 이벤트 집합에 액세스 할 수 있지만 C-API는 COM보다 훨씬 우수한 성능을 나타내며 멀티 스레딩, 비동기, RTD, 클러스터 등은 COM에서 제공하지 않습니다.

ExcelDNA에서 COM을 사용한다는 것은 본질적으로 느린 COM-INTEROP을 사용한다는 것을 의미합니다.

+0

및 VBA에 대한 C-API : 예 몇에서 찾을 수 있습니다. 이것이 맞다면 여전히 문제가 될까요? –

+1

VBA에서는 Excel-DNA가 작동하지 않습니다. Excel DNA를 사용하면 동일한 솔루션에서 C-API와 COM-Interop을 모두 사용할 수 있습니다. 사용하는 것은 인터페이스의 선택과 다른 기능에 따라 다릅니다. 일반적으로 모든 UDF 코드에 대해 C-API를 독점적으로 사용하고 다른 모든 경우에는 COM-Interop 만 사용합니다. –

0

저는 UI 구성 요소 작성의 용이성과 낮은 TCO에 대해 Charles에게 동의하고 C# 및 Excel DNA (또는 Addin Express는 공정하게)를 사용하여 새로운 기능을 신속하게 프로토 타이핑합니다.

성능이 가장 중요하다는 것을 선언하기 전에 몇 가지 기대치를 설정하고 관련된 계산 또는 이벤트를 측정하십시오. 진정으로 성능에 민감한 섹션이 있다면이를 격리하고 C# 또는 VB.NET으로 작성된 UI와 통합 할 수있는 관리되는 C++ 코드를 작성하십시오.

또한 Excel DNA 및 VBA에 관한 Charles의 의견에 대한 사소한 수정. 그들은 함께 일한다. 내가 ExcelDNA는 유체 리본 상호 작용 COM-INTEROP을 사용하고 있다고 생각