Я новичок в написании XLL, Кто-нибудь знает, как вернуть массив 6x1 в Excel?Как вернуть массив из функции XLL
Ниже моя функция (некоторые коды пришли из другого поста):
__declspec(dllexport) LPXLOPER12 WINAPI GetArr(char* arg1, char* arg2)
{
vector<double> arr = functionReturnVector;
XLOPER12 list;
list.xltype = xltypeMulti | xlbitDLLFree;
list.val.array.lparray = new XLOPER12[6];
list.val.array.rows = 6;
list.val.array.columns = 1;
for(int i = 0; i < 6; ++i) {
list.val.array.lparray[i] = arr[i]; // error: IntelliSense: no operator "=" matches these operands
}
return &list;
}
[2013-02-23] В настоящее время я читаю коды из XLL RETURN ARRAY и пересмотреть свой код, он может скомпилировать, но возвращается 0 ...
__declspec(dllexport) LPXLOPER12 WINAPI GetArr(void)
{
XLOPER xlArray, xlValues[2];
xlValues[0].xltype = xltypeNum;
xlValues[1].xltype = xltypeNum;
xlValues[0].val.num = 11;
xlValues[1].val.num = 17;
xlArray.xltype = xltypeMulti|xlbitDLLFree;
xlArray.val.array.rows = 1;
xlArray.val.array.columns = 2;
xlArray.val.array.lparray = &xlValues;
return &xlArray;
}
Я ничего не знаю о xll, но «список» - это локальная переменная в первую очередь. вы не можете указать указатели на локальные переменные. второй arr [i] имеет тип, когда list.val.array.lparray [i] имеет тип (вы только что сделали новый XLOPER12 [6] несколько строк раньше). –
user928204
Возможно дубликатом вопрос - [Смотреть здесь] [1] [1]: http://stackoverflow.com/questions/14301998/how-to-return-an-array-from-an-xll -udf –
Да, я прочитал это сообщение, но код все еще не работает. – hkdeveloper758