Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
5年前关闭。
Improve this question
我正在研究与COM对象进行通信的Excel插件(XLL)。因此,我必须在XLOPER和VARIANT之间进行编码。我已经完成了大部分工作,但是数组无疑是很痛苦的。我需要支持一维和二维数组。
我想以前有人已经处理过了。简化处理VARIANT,SAFEARRAY和XLOPER(和XLOPER12)的最佳方法是什么? .xltype是xltypeMulti .val.array是指向xlopers数组的指针。
变体数组:
.vt是VT_ARRAY | VT_VARIANT .parray是 变体的SafeArray
此编码的其他技巧:
xltypeRef和xltypeSRef:使用xlCoerce查找实际单元格值。 整数值有溢出的风险。 字符串编码很烦人。 xloper使用char,xloper12使用wchar,variant使用bstr。 请记住释放为新xloper字符串分配的缓冲区。相应地使用xlbitDLLFree和xlAutoFree(12)。 模板编程对于xloper / xloper12问题很有用。助推器有帮助。 _bstr_t也有帮助。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
5年前关闭。
Improve this question
我正在研究与COM对象进行通信的Excel插件(XLL)。因此,我必须在XLOPER和VARIANT之间进行编码。我已经完成了大部分工作,但是数组无疑是很痛苦的。我需要支持一维和二维数组。
我想以前有人已经处理过了。简化处理VARIANT,SAFEARRAY和XLOPER(和XLOPER12)的最佳方法是什么?
最佳答案
为此,我不得不手动编写自己的编码代码。没有可免费使用的库来处理此问题。 XLW用于包装您的整个插件-这对我来说不是一个选择。
最后,只花了很多时间,浏览了xloper和variant的文档,并弄清楚了如何将它们相互映射。
对于好奇:
xloper(12)中的数组:
变体数组:
此编码的其他技巧:
boost::numeric_cast
可以帮助您。 关于c++ - 如何在XLOPER和VARIANT之间进行编码? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4514679/
10-13 00:33