XLL:将xloper转换为向量<double>

如何将xloper或xloper12转换为vector?

这是一个直截了当的问题,我不明白还有什么其他的细节。

这有点痛苦,但是这里有一些框架代码让你开始。

假设您有一个LPXLOPER12 lpxloper (或较旧的LPXLOPERtypes)。 你得到使用的types

DWORD type = lpxloper->xltype & ~(xlbitXLFree|xlbitDLLFree);

唯一的非标量types是xltypeMulti 。 如果你有这样的types,那么你可以使用

 auto rows = lpxloper->val.array.rows; auto columns = lpxloper->val.array.columns; 

设置您的std::vector并使用以下内容来提取元素:

 for (decltype(rows) i = 0; i < rows; ++i){ for (decltype(columns) j = 0; j < columns; ++j){ /*element i, j is*/ = lpxloper->val.array.lparray + j + (i * columns); } } 

我已经使用了autodecltype所以这与XLOPER和XLOPER12。 行索引types不同。