Я использую Excel 2007. У меня есть код C #, написанный в отдельном двоичном файле. Код использует статические классы и статические методы для классов. У меня есть ссылка на DLL в моем проекте VSTO Excel Worksheet. Что мне нужно добавить или изменить, чтобы заставить это работать?
Мой код C # выглядит так:
using System;
using System.Collections.Generic;
using Microsoft.Office.Interop.Excel;
using System.Runtime.InteropServices;
namespace FooStatistics
{
[ComVisible(true)]
public static class Statistics
{
public static int Count(Range range)
{
return range.Count;
}
Я хочу иметь возможность поместить формулу в ячейку Excel, которая выглядит следующим образом:
=FooStatistic.Statistic.Count(A1:A10)
Или что угодно.
Я видел это , но, похоже, это для нестатических классов в Excel 2003. Я не могу поверить, что интеграция уже не лучше.
Я рассмотрел множество вопросов StackOverflow по этому вопросу. Похоже, они не обеспечивают нативную интеграцию (многие говорят «Использовать библиотеку с открытым исходным кодом X»), и, к сожалению, многие из них не принимаются OP. Я не ищу «Сделать его объектом COM и вызывать его из VBA».
Итак, я ищу:
- Excel 2007
- код в C # DLL
- вызов из ячейки Excel как UDF
- встроенная интеграция
Итак, вот еще одна ссылка StackOverflow , в которой два респондента говорят:
- Насколько я знаю, вы не можете напрямую создавать UDF в VSTO.
- VSTO не поддерживает создание пользовательских функций Excel. Надстройки автоматизации можно создавать в .Net, и, похоже, это одобренный Microsoft способ сделать это.
Это вопрос с июня 2009 года. Верно ли это - в 2009 году вы должны представить свои компоненты .NET в качестве COM-серверов, чтобы получить вызываемые пользовательские функции для Excel?