【发布时间】:2020-07-15 09:11:52
【问题描述】:
大约 15 年前,我正在使用 C-API 为 Excel 编写 .xll 插件,主要用于电子表格公式(复杂且耗时的计算),并使用 C++(非常喜欢我的首选语言)编写。我随后用 C# 包装器做了一些事情。
在 Excel 和 Visual Studio 快速发展的长时间休息之后,我再次考虑构建一个插件以使用已编译的代码进行长时间的优化,而不是使用 VBA 脚本。优化涉及从工作表中取出大量数据,然后进行处理,然后将结果写回工作簿(因为我想稍后将它们绘制成图表等)。
注意。这是我自己使用的,我不打算分发任何解决方案
在伪 Excel VBA 代码中,我想要的是这样的:
Dim obj as MyOptimizer
Dim rngInputData as Range
obj.SetData(rngInputData)
obj.Optimize
Dim v as vOutputData
v = obj.GetResult
我对可用的选项有点困惑(没有特别的顺序):
- 使用 VBA xla 包装器编写 C 样式的 dll
- 使用 Excel.DNA C# 包装器编写 C 样式的 dll
- 编写某种 COM 对象(虽然我不确定要使用 Visual Studio 模板)
- 别的东西...
COM 对象有它的吸引力,因为它会保持状态,我可以创建我的对象的实例,而无需编写笨重的句柄传递系统。另一个考虑因素是不同层之间的编组数量(我将使用很多二维数组,尽管只有双精度数组),以及输入的类型检查。
我正在这个十字路口寻找一些指导,在我进入一种特定方法的兔子洞之前......当然,我会带着更多问题回来!
谢谢!
【问题讨论】:
标签: excel-addins