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

XLL: Convert xloper to vector<double>

本文关键字:lt double gt xloper 转换 XLL      更新时间:2023-10-16

如何将xloper或xloper12转换为向量?

这是一个直截了当的问题,我看不出还有什么其他细节可以提供。

这有点痛苦,但这里有一些框架代码可以帮助您入门。

假设您有一个LPXLOPER12 lpxloper(或旧的LPXLOPER类型)。使用获得类型

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

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

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一起使用。行索引类型不同。