我想创建一个excel插件。我有一些 C++ DLL 导出在各种类中定义的一些函数。我想在创建excel插件时使用这些功能。
为此,我正在尝试创建一个简单计算单利的演示插件。
这是 C++ DLL 源文件下面。
//SimpleInterest.CPP
#include <iostream>
using namespace std;
#include "CalSimpleInterest.h"
namespace simpleInt
{
// total interest
double calculateInterest:: CalSimplInterest(double Principal, double Rate, double Time)
{
double interest = 0.0;
interest = (Principal * Time * Rate) / 100;
return interest;
}
}
类似的头文件
//CalSimpleInterest.h
namespace simpleInt
{
class calculateInterest
{
public:
static __declspec(dllexport) double CalSimplInterest(double Principal, double Rate, double Time);
};
}
我已经遵守并创建了 CalSimpleInterest.dll 。现在我想在 C#/C++ 中使用 CalSimplInterest() 函数来创建一个 excel 插件。
我还搜索了各种替代方法来编写 excel 插件。
我发现有很多方法可以做到这一点。
制作一个 C# 包装器,从 .NET UDF 调用我们的非托管 C++ 代码。- .NET Framework 提供带有 Dllimport 属性的 PInvoke 功能,以允许托管应用程序调用打包在 DLL 中的非托管函数。- 它存在速度、稳定性和技能等问题。
微软 Excel SDK。- 但我在各种论坛上读到,这是一项繁琐且容易出错的任务,需要专业技能和经验。
我们可以使用尽可能少的第三方附加框架/工具包:
i) XLW ( http://xlw.sourceforge.net/ ),它是一个标准的开源 C/C++ 包装器。
ii) XLL+ 工具包隐藏了环境的复杂性,并允许程序员和设计师专注于他们的核心技能。
iii) 对于托管代码,或制作一个从 .NET UDF 调用非托管 C++ 代码的 C# 包装器,我们可以使用 Excel-DNA ( http://exceldna.codeplex.com )。
如果我对这些方法中的任何一个有错误,请纠正我,并建议我可以使用哪种方法。