我正在开发一个与 COM 对象通信的 Excel 插件 (XLL)。所以,我必须在 XLOPER 和 VARIANT 之间进行编组。我已经完成了大部分工作,但数组绝对是一种痛苦。我需要支持一维和二维数组。
我想有人以前已经不得不处理这个问题了。简化处理 VARIANT、SAFEARRAY 和 XLOPER(以及 XLOPER12)的最佳方法是什么?
我正在开发一个与 COM 对象通信的 Excel 插件 (XLL)。所以,我必须在 XLOPER 和 VARIANT 之间进行编组。我已经完成了大部分工作,但数组绝对是一种痛苦。我需要支持一维和二维数组。
我想有人以前已经不得不处理这个问题了。简化处理 VARIANT、SAFEARRAY 和 XLOPER(以及 XLOPER12)的最佳方法是什么?
我不得不为此手动滚动我自己的编组代码。没有免费可用的库来处理这个问题。XLW 是用来包装你的整个插件的——这不是我的选择。
最后,只花了很多时间,查看 xloper 和变体的文档,并弄清楚如何将它们相互映射。
对于好奇:
xloper(12) 中的数组:
变体中的数组:
此编组的其他提示:
boost::numeric_cast
对此有帮助。我使用 XLL Plus(费用) http://www.as-ltd.co.uk/xllplus/default.htm
还有 XLW(开源) http://xlw.sourceforge.net/
可能还有我不知道的其他人