Вызов функции в XLL-файле из C#
У меня есть файл xll, в котором есть функция, и я хочу вызвать эту функцию из C#. Этот файл xll используется в файле excel.any. У вас есть идея, как это сделать? Я пытался ссылаться на файл xll, но не получаю значение. Если я открываю Excel, как start ->programms->excel и в Excel, если Я непосредственно даю функцию, я получаю правильное значение. То же самое Если я автоматизирую Excel в C# и открыл Excel из Microsoft.Office.Interop.Excel и применил функцию, я получаю ошибку
3 ответа
XLL это просто DLL. Если вы знаете сигнатуру функции, которую хотите вызвать, вы можете вызвать ее, как и любую другую функцию. Если вы не знаете подпись, но можете загрузить надстройку в Excel, есть способ заставить Excel сообщить вам подпись.
Автоматизация работает только в том случае, если вы используете Excel. В этом нет необходимости, если вы знаете подпись.
Вы, вероятно, не сможете вызвать функцию напрямую, потому что XLL будет ожидать, что интерфейсы Excel будут работать. Тебе придется серьезно подделать.
Автоматизация через Excel будет работать, хотя.
Есть несколько инструментов, которые вы можете использовать:
Вопрос также был задан на 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 или веб-приложении не является тривиальным: /questions/6708799/vyizov-funktsij-exceldllxll-iz-c/6708821#6708821