Вызов функции в XLL-файле из C # - PullRequest
0 голосов
/ 13 сентября 2011

У меня есть файл xll, в котором есть функция, и я хочу вызвать эту функцию из C #.Этот файл xll используется в файле excel.any. У вас есть идея, как это сделать? Я пытался ссылаться на файл xll, но не получаю значение. Если я открываю Excel как start -> programms -> Excel и Excel, еслиЯ непосредственно даю функцию, я получаю правильное значение. То же самое Если я автоматизирую Excel в C # и открыл Excel из Microsoft.Office.Interop.Excel и применил функцию, я получаю ошибку

Ответы [ 3 ]

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

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

Автоматизация работает, только если вы используете Excel. В этом нет необходимости, если вы знаете подпись.

0 голосов
/ 03 мая 2017

Существует несколько инструментов, которые вы можете использовать:

XLL Plus
XLL Host


Вопрос такжена MSDN Использовать XLL из C # , это ответ:

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

Если вам нужно создать сборку .NET из dll, вы можете попробовать использовать инструмент импорта библиотеки типов для создания оболочки вокруг dll:

tlbimp.exe xll.dll /out:xllnet.dll

Если объект не поддерживает COM, а только собственные вызовы, вам нужно будет вызывать методы платформы с помощью атрибута DllImport.Для получения дополнительной информации см. Учебник «Вызов платформы».


Я дал все 3 предложения, но безуспешно.Учитывая, что автор инструмента XLL Excel-DNA рекомендует использовать инструмент, который я подозреваю, использование XLL в Winform / WPF / Console или веб-приложении не является тривиальным: https://stackoverflow.com/a/2865023/495455

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

Вы, вероятно, не сможете вызвать функцию напрямую, потому что XLL будет ожидать, что интерфейсы Excel будут работать. Тебе придется серьезно подделать.

Автоматизация через Excel будет работать.

...